[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