[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