[svn] r6623: nemerle/trunk/ncc: external/LibrariesLoader.n passes.n

VladD2 svnadmin at nemerle.org
Thu Sep 7 15:19:07 CEST 2006


Log:
Fix a bug in ManagerClass.LoadExternalLibraries().


Author: VladD2
Date: Thu Sep  7 15:18:59 2006
New Revision: 6623

Modified:
   nemerle/trunk/ncc/external/LibrariesLoader.n
   nemerle/trunk/ncc/passes.n

Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n	(original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n	Thu Sep  7 15:18:59 2006
@@ -349,6 +349,20 @@
     // extension method name -> list of extension methods
     private _extension_methods : Hashtable [string, list [IMethod]] = Hashtable ();
 
+    /// Remove extension methods defined in code (not external).
+    public RemoveInternalExtensionMethods() : void
+    {
+      foreach ((name, lst) when lst.Exists(_ is MethodBuilder) in _extension_methods.KeyValuePairs)
+      {
+        def newList = lst.RevFilter (x => !(x is MethodBuilder));
+
+        if (newList is [])
+          _ = _extension_methods.Remove (name);
+        else
+          _extension_methods[name] = newList;
+      }
+    }
+
 
     /* -- TYPE CACHE ----- */
 

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Thu Sep  7 15:18:59 2006
@@ -355,7 +355,7 @@
     }
 
     protected internal LoadExternalLibraries () : void {
-      when (shouldCreate (InternalType.Void)) {
+      if (shouldCreate (InternalType.Void)) {
         unless (Options.DoNotLoadStdlib) {
           LibrariesManager.AddLibrary ("mscorlib");
           LibrariesManager.AddLibrary ("System");
@@ -381,6 +381,8 @@
           
         CoreEnv = GlobalEnv.CreateCore (NameTree);                    
       }
+      else // We use LibrariesManager repeatedly.
+        LibrariesManager.RemoveInternalExtensionMethods();
     }
 
     



More information about the svn mailing list