[svn] r6322: nemerle/trunk: boot/Nemerle.Compiler.dll boot/Nemerle.Macros.dll boot/Nemerle.dll boot/ncc.ex...

malekith svnadmin at nemerle.org
Tue May 23 14:58:36 CEST 2006


Log:
Transform Manager into a class. There is still Instance field, but it's a good beginning :-)

Author: malekith
Date: Tue May 23 14:58:06 2006
New Revision: 6322

Modified:
   nemerle/trunk/boot/Nemerle.Compiler.dll
   nemerle/trunk/boot/Nemerle.Macros.dll
   nemerle/trunk/boot/Nemerle.dll
   nemerle/trunk/boot/ncc.exe
   nemerle/trunk/macros/Logging.n
   nemerle/trunk/macros/compiler.n
   nemerle/trunk/ncc/codedom/NemerleCodeCompiler.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/ClassMembers.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/main.n
   nemerle/trunk/ncc/parsing/AST.n
   nemerle/trunk/ncc/parsing/Lexer.n
   nemerle/trunk/ncc/parsing/MainParser.n
   nemerle/trunk/ncc/parsing/ParseTree.n
   nemerle/trunk/ncc/parsing/PreParser.n
   nemerle/trunk/ncc/parsing/Utility.n
   nemerle/trunk/ncc/passes.n
   nemerle/trunk/ncc/testsuite/test.n
   nemerle/trunk/ncc/typing/MacroColorizer.n
   nemerle/trunk/ncc/typing/MacroRegistry.n
   nemerle/trunk/ncc/typing/Macros.n
   nemerle/trunk/ncc/typing/OverloadPossibility.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/TypedTree.n
   nemerle/trunk/ncc/typing/Typer-DelayedTyping.n
   nemerle/trunk/ncc/typing/Typer-PatternTyper.n
   nemerle/trunk/ncc/typing/Typer.n
   nemerle/trunk/ncc/typing/Typer2.n

Modified: nemerle/trunk/boot/Nemerle.Compiler.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/Logging.n
==============================================================================
--- nemerle/trunk/macros/Logging.n	(original)
+++ nemerle/trunk/macros/Logging.n	Tue May 23 14:58:06 2006
@@ -60,7 +60,7 @@
 
     this ()
     {
-      Manager.OnInit += Init;
+      ManagerClass.Instance.OnInit += Init;
       FlagsToFunctions [""] = <[ System.Console.WriteLine ]>;
       Init ();
     }

Modified: nemerle/trunk/macros/compiler.n
==============================================================================
--- nemerle/trunk/macros/compiler.n	(original)
+++ nemerle/trunk/macros/compiler.n	Tue May 23 14:58:06 2006
@@ -64,6 +64,16 @@
   }
 }
 
+namespace Nemerle.Compiler
+{
+  [Nemerle.MacroUsage (Nemerle.MacroPhase.BeforeInheritance,
+                       Nemerle.MacroTargets.Class)]
+  macro ManagerAccess (tb : TypeBuilder)
+  {
+    tb.Define (<[ decl: public Manager : ManagerClass = ManagerClass.Instance; ]>);
+  }
+}
+
 namespace Nemerle.Compiler.SolverMacros
 {
   macro ReportError (messenger, msg)

Modified: nemerle/trunk/ncc/codedom/NemerleCodeCompiler.n
==============================================================================
--- nemerle/trunk/ncc/codedom/NemerleCodeCompiler.n	(original)
+++ nemerle/trunk/ncc/codedom/NemerleCodeCompiler.n	Tue May 23 14:58:06 2006
@@ -156,7 +156,8 @@
           Message.Error ("need at least one file to compile");
         else {
           Options.Sources = files + List.FromArray (fileNames);
-          Manager.Run ();
+          def m = ManagerClass ();
+          m.Run ();
           succeeded = !failed;
         }
       }

Modified: nemerle/trunk/ncc/completion/CodeCompletionEngine.n
==============================================================================
--- nemerle/trunk/ncc/completion/CodeCompletionEngine.n	(original)
+++ nemerle/trunk/ncc/completion/CodeCompletionEngine.n	Tue May 23 14:58:06 2006
@@ -180,6 +180,7 @@
         }
     }
     
+    [ManagerAccess]
     public module Engine
     {
         public mutable IsInCompletionMode : bool;

Modified: nemerle/trunk/ncc/external/Codec.n
==============================================================================
--- nemerle/trunk/ncc/external/Codec.n	(original)
+++ nemerle/trunk/ncc/external/Codec.n	Tue May 23 14:58:06 2006
@@ -90,7 +90,7 @@
     def self (t) { decode (lib, tenv, t) : TyVar };
     match (t) {
       | Term.App (name, args) when name[0] != '.' =>
-        match (Manager.NameTree.LookupExactType (NString.Split (name, array ['.', '+']))) {
+        match (lib.Manager.NameTree.LookupExactType (NString.Split (name, array ['.', '+']))) {
           | Some (tc) =>
             if (tc.FullName == "System.Void") InternalType.Void
             else

Modified: nemerle/trunk/ncc/external/InternalTypes.n
==============================================================================
--- nemerle/trunk/ncc/external/InternalTypes.n	(original)
+++ nemerle/trunk/ncc/external/InternalTypes.n	Tue May 23 14:58:06 2006
@@ -35,6 +35,7 @@
 
 namespace Nemerle.Compiler {
 
+[ManagerAccess]
 public module SystemType 
 {
   public mutable Array : System.Type;
@@ -281,9 +282,9 @@
     typarms > 1 && dt.Equals (InternalType.GetTupleType (typarms).tycon)
   }
   
-  internal this (size : int)
+  internal this (m : ManagerClass, size : int)
   {
-    tycon = Manager.NameTree.LookupInternalType (name, size);
+    tycon = m.NameTree.LookupInternalType (name, size);
     fields = array (size + 1);
     for (mutable i = 1; i <= size; ++i)
       fields [i] = get_field (i);
@@ -333,9 +334,9 @@
   static function_name = ["Nemerle", "Builtins", "Function"] : list [string];
   static function_void_name = ["Nemerle", "Builtins", "FunctionVoid"] : list [string];
   
-  internal this (size : int)
+  internal this (m : ManagerClass, size : int)
   {
-     tycon = Manager.NameTree.LookupInternalType (function_name, size + 1);
+     tycon = m.NameTree.LookupInternalType (function_name, size + 1);
      foreach (meth :> IMethod in tycon.LookupMember ("apply")) {
        when (meth.GetParameters ().Length == size) {
          assert (apply == null);
@@ -344,12 +345,13 @@
      };
      assert (apply != null);
 
-     void_tycon = Manager.NameTree.LookupInternalType (function_void_name, size);
+     void_tycon = m.NameTree.LookupInternalType (function_void_name, size);
      apply_void = void_tycon.LookupMember ("apply_void").Head :> IMethod;
   }
 }
   
 
+[ManagerAccess]
 public module InternalType
 {
   public mutable Array_tc : TypeInfo;
@@ -489,7 +491,7 @@
       Message.FatalError ($ "function types only up to $(function_types.Length) "
                             "parameters are supported, sorry (got $len)");
     when (function_types [len] == null)
-      function_types [len] = FunctionType (len);
+      function_types [len] = FunctionType (Manager, len);
 
     function_types [len]
   }
@@ -500,7 +502,7 @@
       Message.FatalError ($ "tuple types only up to $(tuple_types.Length) "
                             "parameters are supported, sorry (got $len)");
     when (tuple_types [len] == null)
-      tuple_types [len] = TupleType (len);
+      tuple_types [len] = TupleType (Manager, len);
 
     tuple_types [len]
   }

Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n	(original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n	Tue May 23 14:58:06 2006
@@ -51,6 +51,7 @@
   /**
    * LibRefManager for the referenced libraries
    */
+  [ManagerAccess]
   class LibraryReferenceManager
   {
     public NameTree : NamespaceTree;
@@ -478,6 +479,7 @@
   /**
    * This class stores information extracted from a referenced external library.
    */
+  [ManagerAccess]
   public class LibraryReference
   {
     /**

Modified: nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
==============================================================================
--- nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	(original)
+++ nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	Tue May 23 14:58:06 2006
@@ -31,6 +31,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   class DecisionTreeCompiler
   {
     type Path = DecisionTreeBuilder.Path;

Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n	Tue May 23 14:58:06 2006
@@ -44,6 +44,7 @@
    * This part of TypesManages is responsible for generation of System.Reflection.Emit structures 
    * composing program hierarchy. It executes emission of all classes and their members.
    */
+  [ManagerAccess]
   public partial class TypesManager
   {
     /* -- PUBLIC CONSTRUCTORS ---------------------------------------------- */

Modified: nemerle/trunk/ncc/generation/Typer3.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer3.n	(original)
+++ nemerle/trunk/ncc/generation/Typer3.n	Tue May 23 14:58:06 2006
@@ -35,6 +35,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   class Typer3
   {
     #region Top typer

Modified: nemerle/trunk/ncc/generation/Typer4.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer4.n	(original)
+++ nemerle/trunk/ncc/generation/Typer4.n	Tue May 23 14:58:06 2006
@@ -43,6 +43,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   class Typer4
   {
     current_fun : Fun_header;
@@ -77,7 +78,6 @@
               else body';
 
             #if CHECK_STV
-              current_t4 = this;
               foreach (tv in current_fun.typarms) {
                 Util.cassert (tv.current_type == null);
                 tv.current_type = current_type;
@@ -149,8 +149,7 @@
     }
 
     #if CHECK_STV
-    static mutable current_t4 : Typer4;
-    static CheckSTV (t : TyVar) : void
+    CheckSTV (t : TyVar) : void
     {
       if (Manager.Solver.CanEnterPossiblyLooping ())
         try {
@@ -178,15 +177,15 @@
               def check (t : TypeInfo) {
                 if (t == null)
                   Util.ice ($ "tv $tv defined in $(tv.current_type) and accessed from "
-                               "$(current_t4.current_type)");
+                               "$(current_type)");
                 else if (t : object == tv.current_type) {}
                 else check (t.DeclaringType)
               }
-              check (current_t4.current_type);
+              check (current_type);
               Util.cassert (tv.current_method == null ||
-                            tv.current_method : object == current_t4.the_method,
+                            tv.current_method : object == the_method,
                             $ "tv $tv defined in $(tv.current_method) and accessed from "
-                               "$(current_t4.the_method)");
+                               "$(the_method)");
               {}
           }
         } finally {
@@ -201,13 +200,13 @@
     }
     #endif
 
-    static NoThrowPlease (e : TExpr) : void
+    NoThrowPlease (e : TExpr) : void
     {
       when (Throws (e))
         Message.Error (e.loc, "`throw' is not allowed here");
     }
 
-    static Throws (expr : TExpr, allow_try = false, is_top = false) : bool
+    Throws (expr : TExpr, allow_try = false, is_top = false) : bool
     {
       log (STV, expr.loc, $ "{ throws: top=$is_top $(expr.GetType()) $expr");
       #if CHECK_STV

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Tue May 23 14:58:06 2006
@@ -53,6 +53,11 @@
   internal mutable ty : MType;
   protected mutable handle : MemberInfo;
 
+  public Manager : ManagerClass
+  {
+    get { declaring_type.Manager }
+  }
+
   [Accessor (flags = WantSetter)]
   protected mutable attributes : NemerleAttributes;
 

Modified: nemerle/trunk/ncc/hierarchy/GlobalEnv.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/GlobalEnv.n	(original)
+++ nemerle/trunk/ncc/hierarchy/GlobalEnv.n	Tue May 23 14:58:06 2006
@@ -37,6 +37,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   public class GlobalEnv 
   {
     open_namespaces : list [NamespaceTree.Node];
@@ -144,7 +145,7 @@
         tb
       
       | PT.ClassMember.TypeDeclaration (td) =>
-        def tyinfo = NamespaceTree.AddType (null, current_namespace, td);
+        def tyinfo = Manager.NameTree.AddType (null, current_namespace, td);
         tyinfo.FixupDefinedClass ();
         tyinfo
       | _ =>
@@ -394,7 +395,7 @@
     /** this is the auxiliary function for making set of opened namespaces
         unique and warn if namespaces are opened multiple times by user
      */
-    static add_open_nodes (old : list [NamespaceTree.Node], added : list [NamespaceTree.Node],
+    add_open_nodes (old : list [NamespaceTree.Node], added : list [NamespaceTree.Node],
                            loc : Location, should_warn : bool)
       : list [list [SyntaxDefinition]] * list [NamespaceTree.Node]
     {

Modified: nemerle/trunk/ncc/hierarchy/MacroClassGen.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/MacroClassGen.n	(original)
+++ nemerle/trunk/ncc/hierarchy/MacroClassGen.n	Tue May 23 14:58:06 2006
@@ -57,6 +57,7 @@
   }
   
   /// GENERATION OF MACRO CLASSES SECTION
+  [ManagerAccess]
   public module MacroClasses
   {
     internal implicit_ctx_name : Name;

Modified: nemerle/trunk/ncc/hierarchy/NamespaceTree.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/NamespaceTree.n	(original)
+++ nemerle/trunk/ncc/hierarchy/NamespaceTree.n	Tue May 23 14:58:06 2006
@@ -35,6 +35,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   public class NamespaceTree
   {
     public variant TypeInfoCache {
@@ -389,7 +390,7 @@
         it add members to existing type instead of creating new TypeBuilder.
      */
     [Nemerle.Assertions.Ensures (value != null)]
-    internal static AddType (par : TypeBuilder, parent_node : Node,
+    internal AddType (par : TypeBuilder, parent_node : Node,
                       newdecl : PT.TopDeclaration) : TypeBuilder
     {
       def pname = newdecl.ParsedName;
@@ -592,7 +593,7 @@
             {
               _N_MacroContexts.serialized = $(LiftMacroContexts ());
               _N_MacroContexts.contexts = array ($(macro_context : int));
-              Manager.OnInit += Clear;
+              ManagerClass.Instance.OnInit += Clear;
             } 
           ]>));
         ty.CannotFinalize = false;

Modified: nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ScanTypeHierarchy.n	Tue May 23 14:58:06 2006
@@ -32,6 +32,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   public module ScanTypeHierarchy
   {
     /** Process toplevel type declaration.
@@ -60,7 +61,7 @@
             _ = Delegates.GenerateDelegateClass (env, parent, t.modifiers, header)
 
           | _ =>
-            def tb = NamespaceTree.AddType (parent, ns_node, t);
+            def tb = Manager.NameTree.AddType (parent, ns_node, t);
             def node_of_type = tb.NamespaceNode;
 
             match (t) {

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Tue May 23 14:58:06 2006
@@ -411,7 +411,7 @@
   {
     match (td) {
       | PT.ClassMember.TypeDeclaration (td) =>
-        def tyinfo = NamespaceTree.AddType (this, namespace_nd, td);
+        def tyinfo = Manager.NameTree.AddType (this, namespace_nd, td);
         when (do_fixup) tyinfo.FixupDefinedClass ();
         tyinfo
       | _ =>
@@ -478,7 +478,7 @@
       _ = Delegates.GenerateDelegateClass (this.GlobalEnv, this, td.modifiers, header);
     
     | PT.ClassMember.TypeDeclaration (td) =>
-      def tyinfo = NamespaceTree.AddType (this, namespace_nd, td);
+      def tyinfo = Manager.NameTree.AddType (this, namespace_nd, td);
       tyinfo.FixupDefinedClass ();
 
     | _ => ignore (DefineAndReturn (f))
@@ -864,42 +864,6 @@
 
   //------------ METHODS FOR TYPING --------------------------------------  
 
-  // helper used in TypeInfo
-  internal static ConstructSubst (tc : TypeInfo, typarms : list [StaticTyVar],
-                                  args : list [TyVar], check_parms : bool) : Subst
-  {
-    def res = Subst ();
-
-    unless (typarms.IsEmpty && args.IsEmpty) {
-      def len_tp = typarms.Length;
-      def len_ac = args.Length;
-
-      if (len_tp == len_ac) {
-        List.Iter2 (typarms, args, fun (tp, val : TyVar) {
-          res.Add (tp, val);
-        });
-
-        when (check_parms)
-          List.Iter2 (typarms, args, fun (tp : StaticTyVar, val : TyVar) {
-            when (val.Equals (InternalType.Void))
-              ReportError (messenger,
-                           $ "cannot use `void' as a generic parameter of $tc");
-            unless (val.Require (res.Apply (tp.LowerBound))) {
-              ReportError (messenger,
-                           $ "typing constraint on $(tp.Name) not satisfied, "
-                             "upon instantiation of $tc");
-            }
-          });
-      } else {
-        ReportError (messenger,
-                     $ "type `$(tc.FullName)' takes $len_tp argument(s) "
-                       "while $len_ac were supplied");
-      }
-    }
-
-    res
-  }
-
   internal MakeUncheckedSubst (args : list [TyVar]) : Subst
   {
     ConstructSubst (this, typarms, args, check_parms = false)
@@ -2664,13 +2628,6 @@
       Message.FatalError (loc, title () + "s are not allowed to be abstract and sealed at the same time: " +
                            FullName)
   }
-
-
-  static messenger : Messenger
-  {
-    get { Manager.Solver.CurrentMessenger }
-  }
-
 }
 
 } // ns

Modified: nemerle/trunk/ncc/hierarchy/TypeInfo.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeInfo.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeInfo.n	Tue May 23 14:58:06 2006
@@ -27,6 +27,7 @@
  */
 
 using Nemerle.Compiler;
+using Nemerle.Compiler.SolverMacros;
 using Nemerle.Compiler.Typedtree;
 
 using Nemerle.Collections;
@@ -139,6 +140,7 @@
   GetSetter () : IMethod;
 }
 
+[ManagerAccess]
 public abstract class TypeInfo : IMember, 
                                  Nemerle.IComparable [TypeInfo]
 {
@@ -571,6 +573,43 @@
   /** */
   public abstract GetTydecl () : TypeDeclaration;
 
+  // helper used in TypeInfo
+  internal ConstructSubst (tc : TypeInfo, typarms : list [StaticTyVar],
+                           args : list [TyVar], check_parms : bool) : Subst
+  {
+    def res = Subst ();
+    def messenger = Manager.Solver.CurrentMessenger;
+
+    unless (typarms.IsEmpty && args.IsEmpty) {
+      def len_tp = typarms.Length;
+      def len_ac = args.Length;
+
+      if (len_tp == len_ac) {
+        List.Iter2 (typarms, args, fun (tp, val : TyVar) {
+          res.Add (tp, val);
+        });
+
+        when (check_parms)
+          List.Iter2 (typarms, args, fun (tp : StaticTyVar, val : TyVar) {
+            when (val.Equals (InternalType.Void))
+              ReportError (messenger,
+                           $ "cannot use `void' as a generic parameter of $tc");
+            unless (val.Require (res.Apply (tp.LowerBound))) {
+              ReportError (messenger,
+                           $ "typing constraint on $(tp.Name) not satisfied, "
+                             "upon instantiation of $tc");
+            }
+          });
+      } else {
+        ReportError (messenger,
+                     $ "type `$(tc.FullName)' takes $len_tp argument(s) "
+                       "while $len_ac were supplied");
+      }
+    }
+
+    res
+  }
+
   /** Construct substitution resulting from applying this type constructor
       to specified arguments.
       
@@ -579,7 +618,7 @@
    */
   internal MakeSubst (parms : list [TyVar]) : Subst
   {
-    TypeBuilder.ConstructSubst (this, typarms, parms, check_parms = true)
+    ConstructSubst (this, typarms, parms, check_parms = true)
   }
   
   internal MakeSubst1 (parms : list [MType]) : Subst

Modified: nemerle/trunk/ncc/main.n
==============================================================================
--- nemerle/trunk/ncc/main.n	(original)
+++ nemerle/trunk/ncc/main.n	Tue May 23 14:58:06 2006
@@ -53,6 +53,8 @@
   {
     mutable stack_kilos : int = 0;
     
+    Manager : ManagerClass = ManagerClass ();
+    
     public Main () : void
     {
       parse_command_line ();

Modified: nemerle/trunk/ncc/parsing/AST.n
==============================================================================
--- nemerle/trunk/ncc/parsing/AST.n	(original)
+++ nemerle/trunk/ncc/parsing/AST.n	Tue May 23 14:58:06 2006
@@ -645,7 +645,7 @@
           | o is System.Enum =>
             def s = o.ToString ("d");
             def tyname = NString.Split (o.GetType ().FullName, '+', '.');
-            def tc = Manager.NameTree.LookupInternalType (tyname);
+            def tc = ManagerClass.Instance.NameTree.LookupInternalType (tyname);
             def t = tc.GetMemType ();
             def int_lit =
               if (s [0] == '-')

Modified: nemerle/trunk/ncc/parsing/Lexer.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Lexer.n	(original)
+++ nemerle/trunk/ncc/parsing/Lexer.n	Tue May 23 14:58:06 2006
@@ -212,6 +212,7 @@
   public Reset () : void {  }
 }
 
+[ManagerAccess]
 public abstract class LexerBase : IDisposable
 {
   internal enum NumberMode {
@@ -1642,7 +1643,7 @@
   | EndOfFile
 }
 
-
+[ManagerAccess]
 public class LexerColorizer
 {
   [Record]

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Tue May 23 14:58:06 2006
@@ -55,6 +55,7 @@
       It also contains some helper methods to perform operation needed to parse
       string as expression or entire file given [LexerBase] instance.
    */
+  [ManagerAccess]
   public partial class MainParser
   {
     /// Reverse Polish Notation token. It is used on the stack created during translation
@@ -156,13 +157,13 @@
           PreParserIndent (lex)
         else
           PreParser (lex);
-      preparser.DocComments = Manager.DocComments;
+      preparser.DocComments = lex.Manager.DocComments;
       
       mutable result = [];
       mutable topstream = preparser.ParseTopLevel ().Child :> Token.LooseGroup;
-      Manager.DocComments = preparser.DocComments;
+      lex.Manager.DocComments = preparser.DocComments;
 
-      def parser = MainParser (Manager.CoreEnv);
+      def parser = MainParser (lex.Manager.CoreEnv);
       def iter () {
         when (topstream != null) {
           parser.eat_assembly_attributes (topstream);

Modified: nemerle/trunk/ncc/parsing/ParseTree.n
==============================================================================
--- nemerle/trunk/ncc/parsing/ParseTree.n	(original)
+++ nemerle/trunk/ncc/parsing/ParseTree.n	Tue May 23 14:58:06 2006
@@ -203,7 +203,7 @@
     // maybe there should be splice type :global, like :dyn?
     static public Global (id : string) : Name
     {
-      Name (id, 1, Manager.CoreEnv)
+      Name (id, 1, ManagerClass.Instance.CoreEnv)
     }
 
     public NewName (id : string) : Name {

Modified: nemerle/trunk/ncc/parsing/PreParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/PreParser.n	(original)
+++ nemerle/trunk/ncc/parsing/PreParser.n	Tue May 23 14:58:06 2006
@@ -74,7 +74,7 @@
     mutable doc_comments : Map [Location, string];
 
     public this (lex : LexerBase) {
-      Env = Manager.CoreEnv;
+      Env = lex.Manager.CoreEnv;
       lex.Keywords = Env.Keywords;
       lexer = lex;
     }

Modified: nemerle/trunk/ncc/parsing/Utility.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Utility.n	(original)
+++ nemerle/trunk/ncc/parsing/Utility.n	Tue May 23 14:58:06 2006
@@ -325,7 +325,7 @@
       def l =
         if (l == Location.Default) Location_stack.top()
         else l;
-      Manager.KillProgressBar ();
+      ManagerClass.Instance.KillProgressBar ();
       def msg = l.ToString () + m;
       when (MessageOccured != null) MessageOccured (l, msg);
       when (output == null)

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Tue May 23 14:58:06 2006
@@ -31,8 +31,10 @@
 
 namespace Nemerle.Compiler 
 {
-  public module Manager 
+  public class ManagerClass 
   {
+    public static mutable Instance : ManagerClass;
+
     internal mutable Solver : Solver;
     public mutable Hierarchy : TypesManager;
     internal mutable LibrariesManager : LibraryReferenceManager;
@@ -83,7 +85,8 @@
     public CleanupOnce : Queue [void -> void] = Queue ();
     
     /// initialize pipelines with default values
-    this () {
+    public this () {
+      Instance = this;
       ParsingPipeline = MainParser.Parse;
       ScanningPipeline = ScanTypeHierarchy.ProcessDeclaration;
     }
@@ -124,7 +127,7 @@
       }
     }
 
-    private shouldCreate (obj : object) : bool
+    private static shouldCreate (obj : object) : bool
     {
       !Options.PersistentLibraries || obj == null
     }
@@ -144,7 +147,7 @@
         LibrariesManager = LibraryReferenceManager (NameTree, Options.LibraryPaths);     
       Util.Init ();
       Options.Validate ();
-      Manager.Solver = Solver ();
+      this.Solver = Solver ();
       if (Options.XmlDocOutputFileName != null)
         DocComments = Map ();
       else

Modified: nemerle/trunk/ncc/testsuite/test.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/test.n	(original)
+++ nemerle/trunk/ncc/testsuite/test.n	Tue May 23 14:58:06 2006
@@ -51,6 +51,8 @@
   {
     public static mutable peverify : string = "";
 
+    public Manager : ManagerClass = ManagerClass ();
+
     private dnet_runtime : string;
     private runtime_parms : list [string];
     private parameters : list [string];

Modified: nemerle/trunk/ncc/typing/MacroColorizer.n
==============================================================================
--- nemerle/trunk/ncc/typing/MacroColorizer.n	(original)
+++ nemerle/trunk/ncc/typing/MacroColorizer.n	Tue May 23 14:58:06 2006
@@ -68,7 +68,7 @@
         colors_stack = (Color, UseColor, UseContext) :: colors_stack;
         Color = 1;
         UseColor = 1;
-        UseContext = Manager.CoreEnv;
+        UseContext = ManagerClass.Instance.CoreEnv;
         fn ()
       } finally {
         PopColor ();

Modified: nemerle/trunk/ncc/typing/MacroRegistry.n
==============================================================================
--- nemerle/trunk/ncc/typing/MacroRegistry.n	(original)
+++ nemerle/trunk/ncc/typing/MacroRegistry.n	Tue May 23 14:58:06 2006
@@ -33,6 +33,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   public class MacroRegistry
   {
     extensions : Hashtable [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 14:58:06 2006
@@ -39,6 +39,7 @@
 
 namespace Nemerle.Compiler {
 
+[ManagerAccess]
 public module Macros
 {
   /// PUBLIC API FOR USAGE IN MACROS
@@ -530,7 +531,7 @@
 
       | PExpr.Spliced (e) => e
 
-      | PExpr.Wildcard => <[ Manager.Solver.FreshTyVar () ]>
+      | PExpr.Wildcard => <[ ManagerClass.Instance.Solver.FreshTyVar () ]>
 
       | PExpr.Ellipsis (ar) =>
         <[ MType.Tuple ($(quoted_ttype (ar))) ]>
@@ -735,7 +736,7 @@
         };
         assert (name.context != null);
         <[ PExpr.MacroCall ($(quoted_name (name, name.context.GetMacroContext ())),
-                            Manager.NameTree.ExactPath ($(Lift (namespc.Name, Lift))),
+                            ManagerClass.Instance.NameTree.ExactPath ($(Lift (namespc.Name, Lift))),
                             $(Lift (parms, quoted_syntax))) ]>
 
       | PExpr.Error => <[ PExpr.Error () ]>

Modified: nemerle/trunk/ncc/typing/OverloadPossibility.n
==============================================================================
--- nemerle/trunk/ncc/typing/OverloadPossibility.n	(original)
+++ nemerle/trunk/ncc/typing/OverloadPossibility.n	Tue May 23 14:58:06 2006
@@ -189,10 +189,10 @@
       assert ((from == null) != is_static, 
               $ "from/IsStatic $member $(member.IsStatic) $is_static");*/
 
+      this.solver = ty.Manager.Solver;
       this.expr = expr;
       this.from = from;
       this.member = member;
-      this.solver = Manager.Solver;
       this.ty = ty;
       this.local_context = typer.GetLocals ();
 
@@ -232,6 +232,11 @@
     mutable formal_types : array [TyVar];
     mutable did_mambo_jumbo : bool;
 
+    public Manager : ManagerClass
+    {
+      get { solver.Manager }
+    }
+
     public ResetOverloadSelectionStuff () : void
     {
       permutation_array = null;
@@ -359,11 +364,13 @@
     /** Filter out impossible overloads from the list.  If there are no 
         possible overloads and we are in the error reporting mode, present
         an appropriate error message.  */
-    static public OnlyPossible (overloads : list [OverloadPossibility], expected : TyVar) 
+    public static OnlyPossible (overloads : list [OverloadPossibility], expected : TyVar) 
                                           : list [OverloadPossibility]
     {
       assert (!overloads.IsEmpty);
 
+      def Manager = overloads.Head.Manager;
+
       def solver = Manager.Solver;
       def res = List.RevFilter (overloads, 
                                 fun (o : OverloadPossibility) { 

Modified: nemerle/trunk/ncc/typing/Solver.n
==============================================================================
--- nemerle/trunk/ncc/typing/Solver.n	(original)
+++ nemerle/trunk/ncc/typing/Solver.n	Tue May 23 14:58:06 2006
@@ -81,6 +81,7 @@
 namespace Nemerle.Compiler 
 {
   /** A constraint solver. */
+  [ManagerAccess]
   public class Solver
   {
     /** Store current constraint state.

Modified: nemerle/trunk/ncc/typing/StaticTyVar.n
==============================================================================
--- nemerle/trunk/ncc/typing/StaticTyVar.n	(original)
+++ nemerle/trunk/ncc/typing/StaticTyVar.n	Tue May 23 14:58:06 2006
@@ -37,6 +37,7 @@
   /** Represents an explicitly bound type variable, like the one from
       polymorphic type or method definition. It is also used in
       generalizations of inferred types. */
+  [ManagerAccess]
   public class StaticTyVar
   {
     public override ToString () : string

Modified: nemerle/trunk/ncc/typing/Subst.n
==============================================================================
--- nemerle/trunk/ncc/typing/Subst.n	(original)
+++ nemerle/trunk/ncc/typing/Subst.n	Tue May 23 14:58:06 2006
@@ -33,15 +33,14 @@
 {
   /** Represent a substitution, from static type variables to types 
       (represented by plain type variables).  */
+  [ManagerAccess]
   public class Subst
   {
     mutable map : SystemMap [int, TyVar];
-    mutable solver : Solver;
     mutable empty : bool;
 
     public this ()
     {
-      this.solver = Manager.Solver;
       empty = true;
       map = SystemMap ();
     }
@@ -81,7 +80,6 @@
     {
       def res = Subst ();
       res.map = map;
-      res.solver = solver;
       res.empty = empty;
       res
     }
@@ -195,6 +193,7 @@
       if (vars.IsEmpty) {
         (res, [])
       } else {
+        def Manager = vars.Head.Manager;
         // Message.Debug ($ "start copying, $(Manager.Solver.CurrentMessenger.LocalError)");
         def was_error = Manager.Solver.CurrentMessenger.LocalError;
         def vars' = 

Modified: nemerle/trunk/ncc/typing/TyVar.n
==============================================================================
--- nemerle/trunk/ncc/typing/TyVar.n	(original)
+++ nemerle/trunk/ncc/typing/TyVar.n	Tue May 23 14:58:06 2006
@@ -46,6 +46,7 @@
 {
   /** Represents a node in constraint graph. Used during type
       inference. */
+  [ManagerAccess]
   public class TyVar : Nemerle.IComparable [TyVar]
   {
     #region PUBLIC interface
@@ -590,7 +591,7 @@
     }
     #endif
     
-    static AddRelation (low : TyVar, high : TyVar) : bool
+    AddRelation (low : TyVar, high : TyVar) : bool
     {
       def low = low.Self;
       def high = high.Self;
@@ -779,7 +780,7 @@
 
 
     [PossiblyLooping (Manager.Solver)]
-    static AddRelation (low : MType, high : TyVar, rev : bool) : bool
+    AddRelation (low : MType, high : TyVar, rev : bool) : bool
     {
       assert (low != null);
       assert (high != null);
@@ -1010,7 +1011,7 @@
     }
 
 
-    static LocalError : bool
+    LocalError : bool
     {
       get { Manager.Solver.CurrentMessenger.LocalError }
     }
@@ -1057,7 +1058,7 @@
 
     static this ()
     {
-      Manager.OnInit += fun () { reuse_queue = null; }
+      ManagerClass.Instance.OnInit += fun () { reuse_queue = null; }
     }
     #endregion
 

Modified: nemerle/trunk/ncc/typing/TyVarEnv.n
==============================================================================
--- nemerle/trunk/ncc/typing/TyVarEnv.n	(original)
+++ nemerle/trunk/ncc/typing/TyVarEnv.n	Tue May 23 14:58:06 2006
@@ -37,24 +37,22 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   public class TyVarEnv
   {
     tyvars : Map [Name, StaticTyVar];
-    solver : Solver;
     messenger : Messenger;
     
     private this (tv : Map [Name, StaticTyVar])
     {
       tyvars = tv;
-      solver = Manager.Solver;
-      messenger = solver.CurrentMessenger;
+      messenger = Manager.Solver.CurrentMessenger;
     }
 
     public this ()
     {
       tyvars = Map ();
-      solver = Manager.Solver;
-      messenger = solver.CurrentMessenger;
+      messenger = Manager.Solver.CurrentMessenger;
     }
 
     public IsEmpty : bool
@@ -173,7 +171,7 @@
     }
     
 
-    static poors_man_lookup_member (ti : TypeInfo, name : string) : list [IMember]
+    poors_man_lookup_member (ti : TypeInfo, name : string) : list [IMember]
     {
       def loop (acc = [name], ti = ti) {
         if (ti == null) acc

Modified: nemerle/trunk/ncc/typing/TypedTree.n
==============================================================================
--- nemerle/trunk/ncc/typing/TypedTree.n	(original)
+++ nemerle/trunk/ncc/typing/TypedTree.n	Tue May 23 14:58:06 2006
@@ -1015,7 +1015,7 @@
 
     static this ()
     {
-      Manager.OnInit += fun () {
+      ManagerClass.Instance.OnInit += fun () {
         true_literal = null;
         false_literal = null;
       }

Modified: nemerle/trunk/ncc/typing/Typer-DelayedTyping.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer-DelayedTyping.n	(original)
+++ nemerle/trunk/ncc/typing/Typer-DelayedTyping.n	Tue May 23 14:58:06 2006
@@ -100,6 +100,12 @@
       }
       
 
+      public Manager : ManagerClass
+      {
+        get { typer.Manager }
+      }
+      
+
       public CompareTo (o : DelayedTyping) : int
       {
         id - o.id

Modified: nemerle/trunk/ncc/typing/Typer-PatternTyper.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer-PatternTyper.n	(original)
+++ nemerle/trunk/ncc/typing/Typer-PatternTyper.n	Tue May 23 14:58:06 2006
@@ -63,7 +63,7 @@
 
     internal Transform (e : PT.PExpr) : PT.PExpr
     {
-      def messenger = Manager.Solver.CurrentMessenger;
+      def messenger = parent.Manager.Solver.CurrentMessenger;
       
       def is_assignment (expr) {
         expr is PT.PExpr.Assign (PT.PExpr.Ref, _) 

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Tue May 23 14:58:06 2006
@@ -51,6 +51,7 @@
   }
 
   /** A class responsible for typing a single (global or local) function.  */
+  [ManagerAccess]
   public partial class Typer
   {
     is_instance_ctor : bool;
@@ -2613,7 +2614,7 @@
       List.Iter (binary, binary_operators.Add);
       List.Iter (unary, unary_operators.Add);
 
-      Manager.OnInit += Clear;
+      ManagerClass.Instance.OnInit += Clear;
     }
 
     static Clear () : void

Modified: nemerle/trunk/ncc/typing/Typer2.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer2.n	(original)
+++ nemerle/trunk/ncc/typing/Typer2.n	Tue May 23 14:58:06 2006
@@ -35,6 +35,7 @@
 
 namespace Nemerle.Compiler
 {
+  [ManagerAccess]
   internal class Typer2
   {
     top_level_fun : MethodBuilder;
@@ -142,6 +143,7 @@
     {
       if (typarms.IsEmpty) true
       else {
+        def Manager = typarms.Head.Manager;
         def is_ok =
           try {
             Manager.Solver.PushState ();



More information about the svn mailing list