[svn] r7609: nemerle/trunk: boot/Nemerle.Compiler.dll boot/Nemerle.MSBuild.Tasks.dll boot/Nemerle.Macros.d...

nazgul svnadmin at nemerle.org
Sun Apr 22 17:25:39 CEST 2007


Log:
Fix caching in _N_MacrosContexts when used in multiple projects

Author: nazgul
Date: Sun Apr 22 17:22:22 2007
New Revision: 7609

Modified:
   nemerle/trunk/boot/Nemerle.Compiler.dll
   nemerle/trunk/boot/Nemerle.MSBuild.Tasks.dll
   nemerle/trunk/boot/Nemerle.Macros.dll
   nemerle/trunk/boot/Nemerle.dll
   nemerle/trunk/boot/ncc.exe
   nemerle/trunk/macros/core.n
   nemerle/trunk/ncc/generation/ILEmitter.n
   nemerle/trunk/ncc/generation/Typer3.n
   nemerle/trunk/ncc/hierarchy/GlobalEnv.n
   nemerle/trunk/ncc/hierarchy/NamespaceTree.n
   nemerle/trunk/ncc/typing/Macros.n
   nemerle/trunk/ncc/typing/Typer.n

Modified: nemerle/trunk/boot/Nemerle.Compiler.dll
==============================================================================
Binary files. No diff available.

Modified: nemerle/trunk/boot/Nemerle.MSBuild.Tasks.dll
==============================================================================
Binary files. No diff available.

Modified: nemerle/trunk/boot/Nemerle.Macros.dll
==============================================================================
Binary files. No diff available.

Modified: nemerle/trunk/boot/Nemerle.dll
==============================================================================
Binary files. No diff available.

Modified: nemerle/trunk/boot/ncc.exe
==============================================================================
Binary files. No diff available.

Modified: nemerle/trunk/macros/core.n
==============================================================================
--- nemerle/trunk/macros/core.n	(original)
+++ nemerle/trunk/macros/core.n	Sun Apr 22 17:22:22 2007
@@ -761,7 +761,7 @@
   {
     def env = Macros.ImplicitCTX().Env;
     def nr = env.GetMacroContext ();
-    <[ PT.Name.NameInCurrentColor ($id, $("_N_MacroContexts" : dyn).Get ($(nr : int))) ]>
+    <[ PT.Name.NameInCurrentColor ($id, $("_N_MacroContexts" : dyn).Get ($(nr : int), Manager ())) ]>
   }
 
   macro pretty_print_expr (exp, expand : bool)

Modified: nemerle/trunk/ncc/generation/ILEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/ILEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/ILEmitter.n	Sun Apr 22 17:22:22 2007
@@ -527,11 +527,12 @@
       }
     }
 
-    private _debug(loc : Located) : void
+    private static _debug(loc : Located) : void
     {
       _ = loc.Location;
     }
 
+
     MarkCall(call : TExpr.Call, loc : Location) : void
     {
       when (IsDebugEnabled)

Modified: nemerle/trunk/ncc/generation/Typer3.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer3.n	(original)
+++ nemerle/trunk/ncc/generation/Typer3.n	Sun Apr 22 17:22:22 2007
@@ -1102,7 +1102,7 @@
       }
     }
 
-    IsCtor (_ : TExpr) : bool
+    static IsCtor (_ : TExpr) : bool
     {
       | TExpr.Base => true
       | TExpr.MacroEnvelope (_, _, e) => IsCtor (e)

Modified: nemerle/trunk/ncc/hierarchy/GlobalEnv.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/GlobalEnv.n	(original)
+++ nemerle/trunk/ncc/hierarchy/GlobalEnv.n	Sun Apr 22 17:22:22 2007
@@ -478,12 +478,11 @@
       all_opened;
     }
     
-   
     /** Creates environment described by given string encoded for purpose
         of storing macro contexts */
-    public this (coded : string)
+    public this (coded : string, in_manager : ManagerClass)
     {
-      Manager = ManagerClass.Instance;
+      Manager = in_manager;
       this.nameTree = Manager.NameTree;
       mutable state = 0;
       mutable last = 0;

Modified: nemerle/trunk/ncc/hierarchy/NamespaceTree.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/NamespaceTree.n	(original)
+++ nemerle/trunk/ncc/hierarchy/NamespaceTree.n	Sun Apr 22 17:22:22 2007
@@ -726,11 +726,16 @@
           {
             private serialized : array [string];
             private contexts : array [GlobalEnv];
+            private mutable last_manager : ManagerClass;
 
-            internal Get (no : int) : GlobalEnv
+            internal Get (no : int, from_manager : ManagerClass) : GlobalEnv
             {
+              when (from_manager : object != last_manager) {
+                Clear ();
+                last_manager = from_manager;
+              }
               when (contexts[no - 1] == null)
-                contexts[no - 1] = GlobalEnv (serialized[no - 1]);
+                contexts[no - 1] = GlobalEnv (serialized[no - 1], from_manager);
               contexts[no - 1]
             }
 
@@ -738,6 +743,7 @@
             {
               for (mutable i = 0; i < contexts.Length; ++i)
                 contexts [i] = null;
+              last_manager = null;
             }
           }
         ]>);

Modified: nemerle/trunk/ncc/typing/Macros.n
==============================================================================
--- nemerle/trunk/ncc/typing/Macros.n	(original)
+++ nemerle/trunk/ncc/typing/Macros.n	Sun Apr 22 17:22:22 2007
@@ -180,9 +180,7 @@
     match (st) {
       | Splicable.Name (name) =>
         assert (name.context != null);
-        def c = name.context.GetMacroContext ();
-        <[ Splicable.Name (Name.NameInCurrentColor ($(name.Id : string),
-                                                    $("_N_MacroContexts" : dyn).Get ($(c : int)))) ]>
+        <[ Splicable.Name ($(quoted_name (name))) ]>
 
       | Splicable.Expression (PExpr.TypeEnforcement (e,  <[ $(ty : name) ]> )) =>        
         match (ty.Id) {
@@ -207,13 +205,12 @@
   quoted_name (n : Name, context : int) : PExpr
   {
     <[ Name.NameInCurrentColor ($(n.Id : string),
-                                $("_N_MacroContexts" : dyn).Get ($(context : int))) ]>
+                                $("_N_MacroContexts" : dyn).Get ($(context : int), ManagerClass.Instance)) ]>
   }
 
   quoted_name (n : Name) : PExpr
   {
-    <[ Name.NameInCurrentColor ($(n.Id : string),
-                                $("_N_MacroContexts" : dyn).Get ($(n.context.GetMacroContext() : int))) ]>
+    quoted_name (n, n.context.GetMacroContext())
   }
   
   public QuotedMatchCase (cas : MatchCase) : PExpr

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Sun Apr 22 17:22:22 2007
@@ -1157,7 +1157,7 @@
       DoExpect (expected, actual, place, true)
     }
 
-    _debug(obj : object) : void
+    static _debug(obj : object) : void
     {
       _ = obj.ToString();
     }



More information about the svn mailing list