[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