[svn] r6513: nemerle/trunk: macros/assertions.n ncc/hierarchy/TypeBuilder.n

nazgul svnadmin at nemerle.org
Sat Aug 12 18:40:47 CEST 2006


Log:
Invariant macro relies on expansion order in a tricky way

Author: nazgul
Date: Sat Aug 12 18:40:42 2006
New Revision: 6513

Modified:
   nemerle/trunk/macros/assertions.n
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n

Modified: nemerle/trunk/macros/assertions.n
==============================================================================
--- nemerle/trunk/macros/assertions.n	(original)
+++ nemerle/trunk/macros/assertions.n	Sat Aug 12 18:40:42 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/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Sat Aug 12 18:40:42 2006
@@ -448,13 +448,14 @@
       | _ => {}
     }
 
+    when (member_map == null)
+      additional_decls = f :: additional_decls;
+
     add_macros_from_parsedmems (f, MacroPhase.BeforeInheritance);            
     add_macros_from_parsedmems (f, MacroPhase.BeforeTypedMembers);      
     
-    if (member_map == null) {
-      additional_decls = f :: additional_decls;
+    if (member_map == null)   
       null
-    }
     else {
       try {
         def mem = bind_and_add_member (f);



More information about the svn mailing list