[svn] r6514: nemerle/trunk: macros/assertions.n
ncc/hierarchy/TypesManager.n
nazgul
svnadmin at nemerle.org
Sat Aug 12 19:25:57 CEST 2006
Log:
Actually, it is better idea to prevent looping during expansion
Author: nazgul
Date: Sat Aug 12 19:25:54 2006
New Revision: 6514
Modified:
nemerle/trunk/macros/assertions.n
nemerle/trunk/ncc/hierarchy/TypesManager.n
Modified: nemerle/trunk/macros/assertions.n
==============================================================================
--- nemerle/trunk/macros/assertions.n (original)
+++ nemerle/trunk/macros/assertions.n Sat Aug 12 19:25:54 2006
@@ -207,14 +207,14 @@
]>
};
ty.Define ( <[ decl:
+ public mutable _N_invariant_lock : bool;
+ ]> );
+ ty.Define ( <[ decl:
public virtual _N_invariant () : void
{
assert ($body, "The class invariant has been violated.")
}
]> );
- ty.Define ( <[ decl:
- public mutable _N_invariant_lock : bool;
- ]> );
| Some (m) =>
def m = m :> MethodBuilder;
m.Body = <[
Modified: nemerle/trunk/ncc/hierarchy/TypesManager.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypesManager.n (original)
+++ nemerle/trunk/ncc/hierarchy/TypesManager.n Sat Aug 12 19:25:54 2006
@@ -139,17 +139,21 @@
attribute_macros_queue.Add (exp);
}
+ private mutable is_expanding : bool = false;
internal ExpandMacros () : void {
+ when (is_expanding) Nemerle.Imperative.Return ();
+
def stage = current_macro_phase;
+ is_expanding = true;
while (!attribute_macros_queue.IsEmpty) {
def first = attribute_macros_queue.Top();
when (first.Phase :> int > stage :> int)
Nemerle.Imperative.Break();
-
//Message.Debug ($"expanding $first");
_ = attribute_macros_queue.ExtractFirst().Expand();
}
+ is_expanding = false;
}
current_macro_phase : MacroPhase
More information about the svn
mailing list