[svn] r7609: nemerle/trunk: boot/Nemerle.Compiler.dll
boot/Nemerle.MSBuild.Tasks.dll boot/Nemerle.Macros.d...
nazgul
svnadmin at nemerle.org
Sun Apr 22 17:25:39 CEST 2007
Log:
Fix caching in _N_MacrosContexts when used in multiple projects
Author: nazgul
Date: Sun Apr 22 17:22:22 2007
New Revision: 7609
Modified:
nemerle/trunk/boot/Nemerle.Compiler.dll
nemerle/trunk/boot/Nemerle.MSBuild.Tasks.dll
nemerle/trunk/boot/Nemerle.Macros.dll
nemerle/trunk/boot/Nemerle.dll
nemerle/trunk/boot/ncc.exe
nemerle/trunk/macros/core.n
nemerle/trunk/ncc/generation/ILEmitter.n
nemerle/trunk/ncc/generation/Typer3.n
nemerle/trunk/ncc/hierarchy/GlobalEnv.n
nemerle/trunk/ncc/hierarchy/NamespaceTree.n
nemerle/trunk/ncc/typing/Macros.n
nemerle/trunk/ncc/typing/Typer.n
Modified: nemerle/trunk/boot/Nemerle.Compiler.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/Nemerle.MSBuild.Tasks.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/core.n
==============================================================================
--- nemerle/trunk/macros/core.n (original)
+++ nemerle/trunk/macros/core.n Sun Apr 22 17:22:22 2007
@@ -761,7 +761,7 @@
{
def env = Macros.ImplicitCTX().Env;
def nr = env.GetMacroContext ();
- <[ PT.Name.NameInCurrentColor ($id, $("_N_MacroContexts" : dyn).Get ($(nr : int))) ]>
+ <[ PT.Name.NameInCurrentColor ($id, $("_N_MacroContexts" : dyn).Get ($(nr : int), Manager ())) ]>
}
macro pretty_print_expr (exp, expand : bool)
Modified: nemerle/trunk/ncc/generation/ILEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/ILEmitter.n (original)
+++ nemerle/trunk/ncc/generation/ILEmitter.n Sun Apr 22 17:22:22 2007
@@ -527,11 +527,12 @@
}
}
- private _debug(loc : Located) : void
+ private static _debug(loc : Located) : void
{
_ = loc.Location;
}
+
MarkCall(call : TExpr.Call, loc : Location) : void
{
when (IsDebugEnabled)
Modified: nemerle/trunk/ncc/generation/Typer3.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer3.n (original)
+++ nemerle/trunk/ncc/generation/Typer3.n Sun Apr 22 17:22:22 2007
@@ -1102,7 +1102,7 @@
}
}
- IsCtor (_ : TExpr) : bool
+ static IsCtor (_ : TExpr) : bool
{
| TExpr.Base => true
| TExpr.MacroEnvelope (_, _, e) => IsCtor (e)
Modified: nemerle/trunk/ncc/hierarchy/GlobalEnv.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/GlobalEnv.n (original)
+++ nemerle/trunk/ncc/hierarchy/GlobalEnv.n Sun Apr 22 17:22:22 2007
@@ -478,12 +478,11 @@
all_opened;
}
-
/** Creates environment described by given string encoded for purpose
of storing macro contexts */
- public this (coded : string)
+ public this (coded : string, in_manager : ManagerClass)
{
- Manager = ManagerClass.Instance;
+ Manager = in_manager;
this.nameTree = Manager.NameTree;
mutable state = 0;
mutable last = 0;
Modified: nemerle/trunk/ncc/hierarchy/NamespaceTree.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/NamespaceTree.n (original)
+++ nemerle/trunk/ncc/hierarchy/NamespaceTree.n Sun Apr 22 17:22:22 2007
@@ -726,11 +726,16 @@
{
private serialized : array [string];
private contexts : array [GlobalEnv];
+ private mutable last_manager : ManagerClass;
- internal Get (no : int) : GlobalEnv
+ internal Get (no : int, from_manager : ManagerClass) : GlobalEnv
{
+ when (from_manager : object != last_manager) {
+ Clear ();
+ last_manager = from_manager;
+ }
when (contexts[no - 1] == null)
- contexts[no - 1] = GlobalEnv (serialized[no - 1]);
+ contexts[no - 1] = GlobalEnv (serialized[no - 1], from_manager);
contexts[no - 1]
}
@@ -738,6 +743,7 @@
{
for (mutable i = 0; i < contexts.Length; ++i)
contexts [i] = null;
+ last_manager = null;
}
}
]>);
Modified: nemerle/trunk/ncc/typing/Macros.n
==============================================================================
--- nemerle/trunk/ncc/typing/Macros.n (original)
+++ nemerle/trunk/ncc/typing/Macros.n Sun Apr 22 17:22:22 2007
@@ -180,9 +180,7 @@
match (st) {
| Splicable.Name (name) =>
assert (name.context != null);
- def c = name.context.GetMacroContext ();
- <[ Splicable.Name (Name.NameInCurrentColor ($(name.Id : string),
- $("_N_MacroContexts" : dyn).Get ($(c : int)))) ]>
+ <[ Splicable.Name ($(quoted_name (name))) ]>
| Splicable.Expression (PExpr.TypeEnforcement (e, <[ $(ty : name) ]> )) =>
match (ty.Id) {
@@ -207,13 +205,12 @@
quoted_name (n : Name, context : int) : PExpr
{
<[ Name.NameInCurrentColor ($(n.Id : string),
- $("_N_MacroContexts" : dyn).Get ($(context : int))) ]>
+ $("_N_MacroContexts" : dyn).Get ($(context : int), ManagerClass.Instance)) ]>
}
quoted_name (n : Name) : PExpr
{
- <[ Name.NameInCurrentColor ($(n.Id : string),
- $("_N_MacroContexts" : dyn).Get ($(n.context.GetMacroContext() : int))) ]>
+ quoted_name (n, n.context.GetMacroContext())
}
public QuotedMatchCase (cas : MatchCase) : PExpr
Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n (original)
+++ nemerle/trunk/ncc/typing/Typer.n Sun Apr 22 17:22:22 2007
@@ -1157,7 +1157,7 @@
DoExpect (expected, actual, place, true)
}
- _debug(obj : object) : void
+ static _debug(obj : object) : void
{
_ = obj.ToString();
}
More information about the svn
mailing list