[svn] r5790: nemerle/trunk: lib/internal.n ncc/generation/Typer4.n ncc/hierarchy/MacroClassGen.n

nazgul svnadmin at nemerle.org
Sun Oct 2 17:44:53 CEST 2005


Log:
Use Identity in macro class generation - FirstClassFunctions goes down from 157 to 46

Author: nazgul
Date: Sun Oct  2 17:44:47 2005
New Revision: 5790

Modified:
   nemerle/trunk/lib/internal.n
   nemerle/trunk/ncc/generation/Typer4.n
   nemerle/trunk/ncc/hierarchy/MacroClassGen.n

Modified: nemerle/trunk/lib/internal.n
==============================================================================
--- nemerle/trunk/lib/internal.n	(original)
+++ nemerle/trunk/lib/internal.n	Sun Oct  2 17:44:47 2005
@@ -153,3 +153,16 @@
     }
   }
 }
+
+namespace Nemerle.Utility
+{
+  public class Identity ['a, 'b] : IntTypes.FuncNew1 ['a, 'b] where 'a : 'b 
+  {
+    // do not work :/
+    //public static Instance : Identity ['a, 'b] = Identity.['a, 'b] ();  
+  
+    public override apply (x : 'a) : 'b {
+      x
+    }
+  }
+}

Modified: nemerle/trunk/ncc/generation/Typer4.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer4.n	(original)
+++ nemerle/trunk/ncc/generation/Typer4.n	Sun Oct  2 17:44:47 2005
@@ -113,7 +113,6 @@
        && (!target_type.IsValueType && !(target_type is MType.TyVarRef)
        ) ||
        (src is MType.TyVarRef && !target_type.IsValueType)
-       
     }
     
 

Modified: nemerle/trunk/ncc/hierarchy/MacroClassGen.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/MacroClassGen.n	(original)
+++ nemerle/trunk/ncc/hierarchy/MacroClassGen.n	Sun Oct  2 17:44:47 2005
@@ -726,8 +726,9 @@
         });
       // for identity we can return much simpler function 
       if (is_identity != int.MaxValue)
-//        <[ Nemerle.Identity () ]>
-        <[ fun (x) { x } ]>
+        <[ (Nemerle.Utility.Identity.[list [SyntaxElement], list [SyntaxElement]] () : object) :> 
+           list [SyntaxElement] -> list [SyntaxElement] ]>
+        // <[ fun (x) { x } ]>
       else { 
         def plen = positions.Length;
       



More information about the svn mailing list