[nem-bug] [Nemerle 0000592]: ICE when mixing yield and functions

feedback at nemerle.org feedback at nemerle.org
Mon May 8 14:27:37 CEST 2006


A NOTE has been added to this issue.
======================================================================
<http://nemerle.org/bugs/view.php?id=592> 
======================================================================
Reported By:                nazgul
Assigned To:                malekith
======================================================================
Project:                    Nemerle
Issue ID:                   592
Category:                   Compiler
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     assigned
======================================================================
Date Submitted:             12-22-2005 22:14 CET
Last Modified:              05-08-2006 14:27 CEST
======================================================================
Summary:                    ICE when mixing yield and functions
Description: 
using System;
using System.Collections;

class X {
        delegate A () :  void;

        static GetIt (mutable  args :  array [int]) :  IEnumerable
        {
                foreach ( arg :> int in args) {
                        Console.WriteLine ("OUT: {0}", arg);
                        mutable  a = fun() {
                                Console.WriteLine ("arg: {0}", arg);
                                ();
                        };
                        a ();
                        yield arg;
                }
        }

        static Main () :  int
        {
                mutable  total = 0;
                foreach ( i :> int in GetIt (   array[ 1, 2, 3])){
                        Console.WriteLine ("Got: " + i);
                        total += i;
                }

                if (total != 6)

                {
                         1;

                }

                else
        {
        {

                 0;
        }
        }
        }
}

======================================================================

----------------------------------------------------------------------
 malekith - 05-08-06 14:27 
----------------------------------------------------------------------
I'm affraid this is not easy fixable.

The foreach loop needs a new closure upon each iteration. We currently do
it by forcing it to reside in a separate function. OTOH C# uses several
closures per function (in case closures are used in loops), which makes
this work.

So some redesigns are required in T3 to support this.

Issue History
Date Modified  Username       Field                    Change              
======================================================================
12-22-05 22:14 nazgul         New Issue                                    
05-05-06 13:27 malekith       Status                   new => assigned     
05-05-06 13:27 malekith       Assigned To               => malekith        
05-08-06 14:27 malekith       Note Added: 0001254                          
======================================================================




More information about the bugs mailing list