[svn] r6324: nemerle/trunk: macros/compiler.n ncc/completion/CodeCompletionEngine.n ncc/external/Codec.n n...

malekith svnadmin at nemerle.org
Tue May 23 19:03:50 CEST 2006


Log:
Make ManagerClass passing more explicit.

Author: malekith
Date: Tue May 23 19:03:47 2006
New Revision: 6324

Modified:
   nemerle/trunk/macros/compiler.n
   nemerle/trunk/ncc/completion/CodeCompletionEngine.n
   nemerle/trunk/ncc/external/Codec.n
   nemerle/trunk/ncc/external/InternalTypes.n
   nemerle/trunk/ncc/external/LibrariesLoader.n
   nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
   nemerle/trunk/ncc/generation/HierarchyEmitter.n
   nemerle/trunk/ncc/generation/Typer3.n
   nemerle/trunk/ncc/generation/Typer4.n
   nemerle/trunk/ncc/hierarchy/BuiltinMethod.n
   nemerle/trunk/ncc/hierarchy/GlobalEnv.n
   nemerle/trunk/ncc/hierarchy/MacroClassGen.n
   nemerle/trunk/ncc/hierarchy/NamespaceTree.n
   nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n
   nemerle/trunk/ncc/hierarchy/TypeInfo.n
   nemerle/trunk/ncc/parsing/Lexer.n
   nemerle/trunk/ncc/parsing/MainParser.n
   nemerle/trunk/ncc/passes.n
   nemerle/trunk/ncc/typing/MType.n
   nemerle/trunk/ncc/typing/MacroRegistry.n
   nemerle/trunk/ncc/typing/Macros.n
   nemerle/trunk/ncc/typing/Solver.n
   nemerle/trunk/ncc/typing/StaticTyVar.n
   nemerle/trunk/ncc/typing/Subst.n
   nemerle/trunk/ncc/typing/TyVar.n
   nemerle/trunk/ncc/typing/TyVarEnv.n
   nemerle/trunk/ncc/typing/Typer.n
   nemerle/trunk/ncc/typing/Typer2.n

Modified: nemerle/trunk/macros/compiler.n
==============================================================================
--- nemerle/trunk/macros/compiler.n	(original)
+++ nemerle/trunk/macros/compiler.n	Tue May 23 19:03:47 2006
@@ -70,7 +70,7 @@
                        Nemerle.MacroTargets.Class)]
   macro ManagerAccess (tb : TypeBuilder)
   {
-    tb.Define (<[ decl: public Manager : ManagerClass = ManagerClass.Instance; ]>);
+    tb.Define (<[ decl: public Manager : ManagerClass; ]>);
   }
 }
 

Modified: nemerle/trunk/ncc/completion/CodeCompletionEngine.n
==============================================================================
--- nemerle/trunk/ncc/completion/CodeCompletionEngine.n	(original)
+++ nemerle/trunk/ncc/completion/CodeCompletionEngine.n	Tue May 23 19:03:47 2006
@@ -199,13 +199,14 @@
         
         public static this()
         {
+            Manager = ManagerClass.Instance;
             IsInCompletionMode = false;
             syncObject = object();
             Defines = DefineCollection ();
             References = ReferenceCollection ();
             Sources = SourceCollection ();
             Manager.ParsingPipeline = MainParser.Parse;
-            Manager.ScanningPipeline = ScanTypeHierarchy.ProcessDeclaration;
+            Manager.ScanningPipeline = ScanTypeHierarchy (Manager).ProcessDeclaration;
             textWriter = null;
             Message.MessageOccured += Message.MessageEventHandler (process_error_message);
         }
@@ -219,16 +220,16 @@
                 Message.InitOutput (textWriter);
             MacroColorizer.Clear ();
             if (!Options.PersistentLibraries || Manager.NameTree == null)        
-              Manager.NameTree = NamespaceTree ();
+              Manager.NameTree = NamespaceTree (Manager);
             else
               Manager.NameTree.Init ();
             when (!Options.PersistentLibraries || Manager.MacrosRegistry == null)
-              Manager.MacrosRegistry = MacroRegistry ();
+              Manager.MacrosRegistry = MacroRegistry (Manager);
             when (!Options.PersistentLibraries || Manager.LibrariesManager == null)
-              Manager.LibrariesManager = LibraryReferenceManager (Manager.NameTree, Options.LibraryPaths);     
+              Manager.LibrariesManager = LibraryReferenceManager (Manager, Options.LibraryPaths);     
             Manager.NameTree.namespace_tree.Clear ();
             Util.Init ();
-            Manager.Solver = Solver ();
+            Manager.Solver = Solver (Manager);
       
             Options.Clear();
             Options.GreedyReferences = true;
@@ -252,13 +253,13 @@
         public LesserInit() : void
         {
             if (!Options.PersistentLibraries || Manager.NameTree == null)        
-              Manager.NameTree = NamespaceTree ();
+              Manager.NameTree = NamespaceTree (Manager);
             else
               Manager.NameTree.Init ();
             when (!Options.PersistentLibraries || Manager.LibrariesManager == null)
-              Manager.LibrariesManager = LibraryReferenceManager (Manager.NameTree, Options.LibraryPaths);     
+              Manager.LibrariesManager = LibraryReferenceManager (Manager, Options.LibraryPaths);     
             Util.Init ();
-            Manager.Solver = Solver ();
+            Manager.Solver = Solver (Manager);
             
             Manager.CoreEnv = GlobalEnv.CreateCore(Manager.NameTree);
         }
@@ -295,7 +296,7 @@
                     def env = observed_method.DeclaringType.GlobalEnv;
                     def my_body = contents.Trim();
     
-                    def lexer = LexerCompletion (my_body + " ", my_body.Length);
+                    def lexer = LexerCompletion (Manager, my_body + " ", my_body.Length);
                     observed_method.GetHeader ().body =
                         FunBody.Parsed (MainParser.ParseExpr (env, lexer));
                 
@@ -590,7 +591,7 @@
                         {
                         | NotParsed as np =>
                             def contents = np.code;
-                            def lexer = LexerString (contents, Location (Location.GetFileIndex (filename), 1, 1));
+                            def lexer = LexerString (Manager, contents, Location (Location.GetFileIndex (filename), 1, 1));
                             def decls = Manager.ParsingPipeline (lexer);
                             Sources.sources[filename] = ParsedFile.Parsed (decls, contents);
                             trees ::= decls;
@@ -608,7 +609,7 @@
                 }
                 
                 System.Console.WriteLine ("just before TypesManager");
-                Manager.Hierarchy = TypesManager ();
+                Manager.Hierarchy = TypesManager (Manager);
     
                 // create N.C.TypeBuilders for all parsed types and add them to namespace hierarchy
                 System.Console.WriteLine ("just before parsing");

Modified: nemerle/trunk/ncc/external/Codec.n
==============================================================================
--- nemerle/trunk/ncc/external/Codec.n	(original)
+++ nemerle/trunk/ncc/external/Codec.n	Tue May 23 19:03:47 2006
@@ -128,7 +128,7 @@
     def vars = _t.GetGenericArguments ();
 
     foreach (gparm in vars) {
-      def tv = StaticTyVar (gparm.Name, gparm);
+      def tv = StaticTyVar (ManagerClass.Instance, gparm.Name, gparm);
       tyvars = tv :: tyvars;
       tenv = tenv.Replace (gparm.Name, tv)
     }
@@ -222,7 +222,7 @@
       def vars = meth.GetGenericArguments ();
 
       foreach (gparm in vars) {
-        def tv = StaticTyVar (gparm.Name, gparm);
+        def tv = StaticTyVar (ManagerClass.Instance, gparm.Name, gparm);
         tyvars = tv :: tyvars;
         tenv = tenv.Replace (gparm.Name, tv)
       }

Modified: nemerle/trunk/ncc/external/InternalTypes.n
==============================================================================
--- nemerle/trunk/ncc/external/InternalTypes.n	(original)
+++ nemerle/trunk/ncc/external/InternalTypes.n	Tue May 23 19:03:47 2006
@@ -228,6 +228,11 @@
     Delegate_Combine = Delegate.GetMethod ("Combine", array [Delegate, Delegate]);
     Delegate_Remove = Delegate.GetMethod ("Remove", array [Delegate, Delegate]);
   }
+
+  this ()
+  {
+    Manager = ManagerClass.Instance;
+  }
 }
 
 public class TupleType 
@@ -634,6 +639,11 @@
       InternalType.Nemerle_list_tc = lookup ("Nemerle.Core.list");
     }
   }
+
+  this ()
+  {
+    Manager = ManagerClass.Instance;
+  }
 }
 
 } // end ns

Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n	(original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n	Tue May 23 19:03:47 2006
@@ -29,6 +29,7 @@
 using Nemerle.Collections;
 using Nemerle.Utility;
 using Nemerle.IO;
+using Nemerle.Assertions;
 using System.IO;
 
 using Nemerle.Compiler.Typedtree;
@@ -61,9 +62,11 @@
     /**
      * constructor. Always load the Framework core library.
      */
-    public this (tree : NamespaceTree, [Nemerle.Assertions.NotNull] lib_paths : list [string]) 
+    public this (man : ManagerClass, 
+                 [NotNull] lib_paths : list [string]) 
     {
-      this.NameTree = tree;
+      this.NameTree = man.NameTree;
+      Manager = man;
       
       def assembly_dir (t) {
         DirectoryOfCodebase (System.Uri(t.Assembly.CodeBase).LocalPath);
@@ -510,6 +513,7 @@
     internal this (mgr : LibraryReferenceManager, assembly : SR.Assembly) 
     {
       LibRefManager = mgr;
+      Manager = mgr.Manager;
       _library = assembly;
       _location = Location (Location.GetFileIndex (
         System.Uri (assembly.CodeBase).LocalPath), 0, 0);
@@ -663,7 +667,7 @@
 
       public this (lib : LibraryReference, h : System.Type, ns_node : NamespaceTree.Node)
       {
-        base (ns_node);
+        base (ns_node, lib.Manager);
         
         // first cache ourself to avoid loops
         LibraryReferenceManager.CacheTypeInfo (h, this, ns_node);
@@ -1122,7 +1126,7 @@
       internal override SubtypingSubst (tc : TypeInfo) : Subst
       {
         if (this.Equals (tc))
-          Subst () // current type, no substitution
+          Subst (Manager) // current type, no substitution
         else
           tc.MakeSubst1 (Option.UnSome (SuperType (tc)));
       }

Modified: nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
==============================================================================
--- nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	(original)
+++ nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	Tue May 23 19:03:47 2006
@@ -91,6 +91,7 @@
 
     public this (t : TyVar, val : TExpr, mcs : list [Match_case])
     {
+      Manager = t.Manager;
       this.tyvar = t;
       this.val = val;
       this.cases = mcs;

Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n	Tue May 23 19:03:47 2006
@@ -55,8 +55,10 @@
       this._assembly_builder
     }
 
-    public this () 
+    public this (man : ManagerClass) 
     {
+      Manager = man;
+
       _OutputFileName = Options.OutputFileName;
 
       unless (Options.TargetIsLibrary) {

Modified: nemerle/trunk/ncc/generation/Typer3.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer3.n	(original)
+++ nemerle/trunk/ncc/generation/Typer3.n	Tue May 23 19:03:47 2006
@@ -144,6 +144,7 @@
 
     this (parent : Typer3, fn : Fun_header)
     {
+      Manager = fn.ret_type.Manager;
       current_local_fun = fn;
       
       if (parent != null) {

Modified: nemerle/trunk/ncc/generation/Typer4.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer4.n	(original)
+++ nemerle/trunk/ncc/generation/Typer4.n	Tue May 23 19:03:47 2006
@@ -55,6 +55,7 @@
     #region Entry points
     public this (meth : MethodBuilder)
     {
+      Manager = meth.DeclaringType.Manager;
       current_fun = meth.GetHeader ();
       the_method = meth;
       messenger = Manager.Solver.CurrentMessenger;

Modified: nemerle/trunk/ncc/hierarchy/BuiltinMethod.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/BuiltinMethod.n	(original)
+++ nemerle/trunk/ncc/hierarchy/BuiltinMethod.n	Tue May 23 19:03:47 2006
@@ -68,7 +68,7 @@
            ret_type = on_type,
            parms = [fp ("left", on_type), fp ("right", on_type)],
            typarms = [],
-           tenv = TyVarEnv ());
+           tenv = TyVarEnv (DeclaringType.Manager));
     }
     
     public GetKind () : MemberKind

Modified: nemerle/trunk/ncc/hierarchy/GlobalEnv.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/GlobalEnv.n	(original)
+++ nemerle/trunk/ncc/hierarchy/GlobalEnv.n	Tue May 23 19:03:47 2006
@@ -70,6 +70,7 @@
           keywords : Set [string],
           ops : Map [string, MainParser.OperatorInfo], nameTree : NamespaceTree)
     {
+      Manager = nameTree.Manager;
       open_namespaces = o;
       current_namespace = c;      
       namespace_aliases = n;
@@ -451,6 +452,7 @@
         of storing macro contexts */
     public this (coded : string)
     {
+      Manager = ManagerClass.Instance;
       this.nameTree = Manager.NameTree;
       mutable state = 0;
       mutable last = 0;

Modified: nemerle/trunk/ncc/hierarchy/MacroClassGen.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/MacroClassGen.n	(original)
+++ nemerle/trunk/ncc/hierarchy/MacroClassGen.n	Tue May 23 19:03:47 2006
@@ -64,7 +64,11 @@
 
     public GetImplicitCTXName () : Name { implicit_ctx_name }
   
-    this () { implicit_ctx_name = Macros.NewSymbol () }
+    this ()
+    {
+      implicit_ctx_name = Macros.NewSymbol ();
+      Manager = ManagerClass.Instance;
+    }
 
     
     /** Generate class implementing interface [MacroRegistry.IMacro], which

Modified: nemerle/trunk/ncc/hierarchy/NamespaceTree.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/NamespaceTree.n	(original)
+++ nemerle/trunk/ncc/hierarchy/NamespaceTree.n	Tue May 23 19:03:47 2006
@@ -369,10 +369,11 @@
     // we store nodes, which were referenced from using / alias to check their existance
     internal referenced_namespace_nodes : SCG.List [list [Node] * Location];
 
-    internal this () {
+    internal this (man : ManagerClass) {
       macro_contexts = Hashtable (100);
       namespace_tree = Node (null, "", TypeInfoCache.NamespaceReference ());
       referenced_namespace_nodes = SCG.List ();
+      Manager = man;
     }
 
     public Init () : void

Modified: nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n	Tue May 23 19:03:47 2006
@@ -33,8 +33,13 @@
 namespace Nemerle.Compiler
 {
   [ManagerAccess]
-  public module ScanTypeHierarchy
+  public class ScanTypeHierarchy
   {
+    public this (man : ManagerClass)
+    {
+      Manager = man;
+    }
+
     /** Process toplevel type declaration.
     
         This function does the very first pass, after parsing.

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Tue May 23 19:03:47 2006
@@ -98,7 +98,7 @@
   internal this (manager : TypesManager, par : TypeBuilder, td : PT.TopDeclaration, 
                  ns_node : NamespaceTree.Node)
   {
-    base (ns_node);
+    base (ns_node, manager.Manager);
 
     this.TyManager = manager;
 
@@ -887,7 +887,7 @@
   internal override SubtypingSubst (tc : TypeInfo) : Subst
   {
     if (this.Equals (tc))
-      Subst () // current type, no substitution
+      Subst (Manager) // current type, no substitution
     else
       tc.MakeSubst1 (Option.UnSome (SuperType (tc)));
   }
@@ -914,7 +914,7 @@
   internal make_tyenvs () : void
   {
     assert (this.tenv == null);
-    def tenv = TyVarEnv ();
+    def tenv = TyVarEnv (Manager);
 
     match (this.pt_tydecl.typarms) {
       | null => 
@@ -2017,7 +2017,7 @@
       def h1 = iface_meth.GetHeader ();
       def h2 = meth.GetHeader ();
       if (h1.typarms.Length == h2.typarms.Length) {
-        def sub = Subst ();
+        def sub = Subst (Manager);
         List.Iter2 (h1.typarms, h2.typarms, fun (stv, target) {
           sub.Add (stv, MType.TyVarRef (target))
         });

Modified: nemerle/trunk/ncc/hierarchy/TypeInfo.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeInfo.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeInfo.n	Tue May 23 19:03:47 2006
@@ -157,10 +157,11 @@
   
   protected namespace_nd : NamespaceTree.Node;
   
-  public this (ns_node : NamespaceTree.Node)
+  public this (ns_node : NamespaceTree.Node, man : ManagerClass)
   {
     id = Util.next_id ();
     namespace_nd = ns_node;
+    Manager = man;
   }
 
   public NamespaceNode : NamespaceTree.Node
@@ -577,7 +578,7 @@
   internal ConstructSubst (tc : TypeInfo, typarms : list [StaticTyVar],
                            args : list [TyVar], check_parms : bool) : Subst
   {
-    def res = Subst ();
+    def res = Subst (Manager);
     def messenger = Manager.Solver.CurrentMessenger;
 
     unless (typarms.IsEmpty && args.IsEmpty) {
@@ -654,9 +655,9 @@
   public virtual NestingSubst (parent : TypeInfo) : Subst
   {
     if (parent.Equals (this))
-      Subst ()
+      Subst (Manager)
     else {
-      def res = Subst ();
+      def res = Subst (Manager);
       def cnt = parent.TyparmsCount;
       def target = GetMemType ().args.FirstN (cnt);
         

Modified: nemerle/trunk/ncc/parsing/Lexer.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Lexer.n	(original)
+++ nemerle/trunk/ncc/parsing/Lexer.n	Tue May 23 19:03:47 2006
@@ -331,8 +331,9 @@
   {
   }
 
-  protected this ()
+  protected this (man : ManagerClass)
   {
+    Manager = man;
     line = 1;
     col = 1;
     putback = false;
@@ -1414,9 +1415,9 @@
     (reader : IDisposable).Dispose ();
   }
   
-  public this (fn : string)
+  public this (man : ManagerClass, fn : string)
   {
-    base ();
+    base (man);
     comment_store = StringBuilder (300);
     file_idx = Location.AddFile (fn);
     file_real = fn;
@@ -1532,9 +1533,9 @@
   reader : string;
   protected mutable pos : int;
 
-  public this (fn : string, loc : Location)
+  public this (man : ManagerClass, fn : string, loc : Location)
   {
-    base ();
+    base (man);
     reader = fn;
     pos = 0;
     file_idx = loc.FileIndex;
@@ -1595,8 +1596,8 @@
   protected mutable pendingToken : Token;
   protected mutable CompletionMarkAt : int;
 
-  public this (fl : string, mark : int) {
-    base (fl, Location_stack.top());
+  public this (man : ManagerClass, fl : string, mark : int) {
+    base (man, fl, Location_stack.top());
     CompletionMarkAt = mark + 1;
   }
 

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Tue May 23 19:03:47 2006
@@ -108,6 +108,7 @@
      */
     public this (env : GlobalEnv) {
       this.env = env;
+      Manager = env.Manager;
     }
 
     /** Parse given string as expression, given context in which this
@@ -118,7 +119,7 @@
                              allow_empty = false) : PExpr
     {
       // we must prevent lexer from bailing out on last token at end of input
-      def lexer = LexerString (expr + " ", Location_stack.top ());
+      def lexer = LexerString (env.Manager, expr + " ", Location_stack.top ());
       ParseExpr (env, lexer, allow_empty)
     }
 

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Tue May 23 19:03:47 2006
@@ -87,7 +87,8 @@
     /// initialize pipelines with default values
     public this () {
       ParsingPipeline = MainParser.Parse;
-      ScanningPipeline = ScanTypeHierarchy.ProcessDeclaration;
+      def scanner = ScanTypeHierarchy (this);
+      ScanningPipeline = scanner.ProcessDeclaration;
     }
 
     public GeneratedAssembly : System.Reflection.Assembly
@@ -137,16 +138,16 @@
       MacroColorizer.Clear ();
       Location.Init ();
       if (shouldCreate (NameTree))
-        NameTree = NamespaceTree ();
+        NameTree = NamespaceTree (this);
       else
         NameTree.Init ();
       when (shouldCreate (MacrosRegistry))
-        MacrosRegistry = MacroRegistry ();
+        MacrosRegistry = MacroRegistry (this);
       when (shouldCreate (LibrariesManager))
-        LibrariesManager = LibraryReferenceManager (NameTree, Options.LibraryPaths);     
+        LibrariesManager = LibraryReferenceManager (this, Options.LibraryPaths);     
       Util.Init ();
       Options.Validate ();
-      this.Solver = Solver ();
+      this.Solver = Solver (this);
       if (Options.XmlDocOutputFileName != null)
         DocComments = Map ();
       else
@@ -156,12 +157,12 @@
       when (LexingPipeline == null)
         if (Options.IndentationSyntax)
           LexingPipeline = fun (fn) {
-            def l = LexerFile (fn);
+            def l = LexerFile (this, fn);
             l.SwitchToIndentationMode ();
             l
           }
         else
-          LexingPipeline = LexerFile;
+          LexingPipeline = LexerFile (this, _);
       when (OnInit != null) OnInit ();
       while (! CleanupOnce.IsEmpty)
         (CleanupOnce.Take ()) ();
@@ -217,7 +218,7 @@
 
       ProgressBar (2);      
 
-      Hierarchy = TypesManager ();
+      Hierarchy = TypesManager (this);
       
       def trees = List.RevMap (Options.Sources, fun (x) { ParsingPipeline (LexingPipeline (x)) });
 

Modified: nemerle/trunk/ncc/typing/MType.n
==============================================================================
--- nemerle/trunk/ncc/typing/MType.n	(original)
+++ nemerle/trunk/ncc/typing/MType.n	Tue May 23 19:03:47 2006
@@ -1002,6 +1002,7 @@
     
     internal this ()
     {
+      base (ManagerClass.Instance);
       lower_bound = this;
       upper_bound = this;
       serial = 1;

Modified: nemerle/trunk/ncc/typing/MacroRegistry.n
==============================================================================
--- nemerle/trunk/ncc/typing/MacroRegistry.n	(original)
+++ nemerle/trunk/ncc/typing/MacroRegistry.n	Tue May 23 19:03:47 2006
@@ -38,8 +38,9 @@
   {
     extensions : Hashtable [NamespaceTree.Node, list [SyntaxDefinition]];
 
-    internal this () {
+    internal this (man : ManagerClass) {
       extensions = Hashtable (50);
+      Manager = man;
     }
 
     internal GetSyntaxExtensions (name_space : NamespaceTree.Node) : list [SyntaxDefinition]

Modified: nemerle/trunk/ncc/typing/Macros.n
==============================================================================
--- nemerle/trunk/ncc/typing/Macros.n	(original)
+++ nemerle/trunk/ncc/typing/Macros.n	Tue May 23 19:03:47 2006
@@ -44,6 +44,11 @@
 {
   /// PUBLIC API FOR USAGE IN MACROS
 
+  this ()
+  {
+    Manager = ManagerClass.Instance;
+  }
+
   /** generates new unique symbol, which can be safely used
       as name of quoted variables, functions, etc.
    */

Modified: nemerle/trunk/ncc/typing/Solver.n
==============================================================================
--- nemerle/trunk/ncc/typing/Solver.n	(original)
+++ nemerle/trunk/ncc/typing/Solver.n	Tue May 23 19:03:47 2006
@@ -142,7 +142,7 @@
     /** Generate a new type variable. */
     public static FreshTyVar () : TyVar
     {
-      TyVar ()
+      TyVar (ManagerClass.Instance)
     }
 
 
@@ -479,8 +479,10 @@
     }
     
     
-    public this ()
+    public this (man : ManagerClass)
     {
+      Manager = man;
+
       dt_stack = Stack ();
       
       messenger = Messenger ();

Modified: nemerle/trunk/ncc/typing/StaticTyVar.n
==============================================================================
--- nemerle/trunk/ncc/typing/StaticTyVar.n	(original)
+++ nemerle/trunk/ncc/typing/StaticTyVar.n	Tue May 23 19:03:47 2006
@@ -94,8 +94,9 @@
     }
     
 
-    public this (name : string)
+    public this (man : ManagerClass, name : string)
     {
+      Manager = man;
       this.name = name;
       id = current_id;
       ++current_id;
@@ -106,12 +107,13 @@
       this.name = other.name;
       this.special = other.special;
       this.id = current_id;
+      this.Manager = other.Manager;
       
       ++current_id;
     }
       
-    public this (name : string, gtype : System.Type) {
-      this (name);
+    public this (man : ManagerClass, name : string, gtype : System.Type) {
+      this (man, name);
       this.gtype = gtype;
     }
     
@@ -162,7 +164,7 @@
         Also return a substitution from the old to the new list.  */
     static public CopyList (typarms : list [StaticTyVar]) : Subst * list [StaticTyVar]
     {
-      def sub = Subst ();
+      def sub = Subst (ManagerClass.Instance);
       def newtp =
         typarms.Map (fun (tp) {
           def ntp = StaticTyVar (tp);

Modified: nemerle/trunk/ncc/typing/Subst.n
==============================================================================
--- nemerle/trunk/ncc/typing/Subst.n	(original)
+++ nemerle/trunk/ncc/typing/Subst.n	Tue May 23 19:03:47 2006
@@ -39,10 +39,11 @@
     mutable map : SystemMap [int, TyVar];
     mutable empty : bool;
 
-    public this ()
+    public this (man : ManagerClass)
     {
       empty = true;
       map = SystemMap ();
+      Manager = man;
     }
 
 
@@ -78,7 +79,7 @@
 
     public Copy () : Subst
     {
-      def res = Subst ();
+      def res = Subst (Manager);
       res.map = map;
       res.empty = empty;
       res
@@ -188,7 +189,7 @@
 
     public static Fresh (vars : list [StaticTyVar]) : Subst * list [TyVar]
     {
-      def res = Subst ();
+      def res = Subst (ManagerClass.Instance);
 
       if (vars.IsEmpty) {
         (res, [])

Modified: nemerle/trunk/ncc/typing/TyVar.n
==============================================================================
--- nemerle/trunk/ncc/typing/TyVar.n	(original)
+++ nemerle/trunk/ncc/typing/TyVar.n	Tue May 23 19:03:47 2006
@@ -1043,8 +1043,9 @@
     #region Constructors (only internal)
     static mutable current_id : int;
 
-    internal this ()
+    internal this (man : ManagerClass)
     {
+      Manager = man;
       id = current_id;
       ++current_id;
       serial = Manager.Solver.top_serial;
@@ -1053,6 +1054,7 @@
     
     this (other : TyVar)
     {
+      Manager = other.Manager;
       CopyFrom (other);
     }
 

Modified: nemerle/trunk/ncc/typing/TyVarEnv.n
==============================================================================
--- nemerle/trunk/ncc/typing/TyVarEnv.n	(original)
+++ nemerle/trunk/ncc/typing/TyVarEnv.n	Tue May 23 19:03:47 2006
@@ -43,16 +43,16 @@
     tyvars : Map [Name, StaticTyVar];
     messenger : Messenger;
     
-    private this (tv : Map [Name, StaticTyVar])
+    private this (man : ManagerClass, tv : Map [Name, StaticTyVar])
     {
+      Manager = man;
       tyvars = tv;
       messenger = Manager.Solver.CurrentMessenger;
     }
 
-    public this ()
+    public this (man : ManagerClass)
     {
-      tyvars = Map ();
-      messenger = Manager.Solver.CurrentMessenger;
+      this (man, Map ())
     }
 
     public IsEmpty : bool
@@ -370,7 +370,7 @@
       }
       def loop (tv : string * int, acc) {
         def (map, the_list) = acc;
-        def tv_obj = StaticTyVar (Pair.First (tv));
+        def tv_obj = StaticTyVar (Manager, Pair.First (tv));
         def name = name_of_tv (tv);
         when (map.Contains (name)) {
           Message.Error ($ "a type variable named `$name' is already in the scope");
@@ -379,7 +379,7 @@
         (map.Replace (name, tv_obj), tv_obj :: the_list)
       }
       def (m, l) = List.FoldLeft (tp.tyvars, (this.tyvars, []), loop);
-      def tenv = TyVarEnv (m);
+      def tenv = TyVarEnv (Manager, m);
 
       def constraints = Hashtable ();
       

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Tue May 23 19:03:47 2006
@@ -79,6 +79,7 @@
     /** Walk through method body typing it. */
     public this (m : MethodBuilder)
     {
+      Manager = m.DeclaringType.Manager;
       current_method_builder = m;
       solver = Manager.Solver;
       current_type = m.DeclaringType;
@@ -182,6 +183,7 @@
 
     this (tb : TypeBuilder, tenv : TyVarEnv, fn : Fun_header, env : GlobalEnv)
     {
+      Manager = env.Manager;
       solver = Manager.Solver;
       current_type = tb;
       parent_typer = None ();
@@ -198,6 +200,7 @@
     /** Walk through a local function body typing it. */
     public this (parent : Typer, fn : Fun_header)
     {
+      Manager = parent.Manager;
       parent_typer = Some (parent);
 
       // copy from parent

Modified: nemerle/trunk/ncc/typing/Typer2.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer2.n	(original)
+++ nemerle/trunk/ncc/typing/Typer2.n	Tue May 23 19:03:47 2006
@@ -65,6 +65,7 @@
     
     public this (ty : TypeBuilder, fn : MethodBuilder)
     {
+      Manager = ty.Manager;
       current_fun = fn.GetHeader ();
       top_fun = current_fun;
       current_fun.usage = FunctionUsage.Used;



More information about the svn mailing list