[svn] r6183: nemerle/trunk/ncc: generation/HierarchyEmitter.n hierarchy/TypeBuilder.n testsuite/positive/m...

nazgul svnadmin at nemerle.org
Mon Apr 10 21:08:08 CEST 2006


Log:
Ensure emission is performed also for macro-added types without members

Author: nazgul
Date: Mon Apr 10 21:08:02 2006
New Revision: 6183

Modified:
   nemerle/trunk/ncc/generation/HierarchyEmitter.n
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n
   nemerle/trunk/ncc/testsuite/positive/macrolib.n
   nemerle/trunk/ncc/testsuite/positive/macroprog.n

Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n	Mon Apr 10 21:08:02 2006
@@ -333,16 +333,13 @@
       when (!aux_phase) _cgil_phase = 4;
     }
 
-    internal MemberAdded (ti : TypeBuilder, _mem : IMember) : void
+    internal EnsureEmitProgress (ti : TypeBuilder) : void
     {
       // Message.Debug ($"ma: $ti -> $mem ");
       when (_cgil_phase >= 1) {
         ti.CreateEmitBuilder ();
         ti.UpdateEmittedInheritance ();
       }
-
-      // when (_cgil_phase >= 2)
-      //  add_declaration (ti, mem);
     }
 
 

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Mon Apr 10 21:08:02 2006
@@ -455,7 +455,7 @@
       try {
         def mem = bind_and_add_member (f);
         when (Manager.IsEmitting) {
-          Manager.MemberAdded (this, mem);
+          Manager.EnsureEmitProgress (this);
           when (IsFinalized)
             Manager.MaybeCompile (this, mem);
         }
@@ -1994,8 +1994,7 @@
       add_members ();
       process_macro_attributes (MacroPhase.WithTypedMembers);
       when (Manager.IsEmitting)
-        foreach (mem in GetDirectMembers ())
-          Manager.MemberAdded (this, mem);
+        Manager.EnsureEmitProgress (this);
     }
   }
   

Modified: nemerle/trunk/ncc/testsuite/positive/macrolib.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/macrolib.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/macrolib.n	Mon Apr 10 21:08:02 2006
@@ -342,6 +342,13 @@
       
     | _ => Message.FatalError($"Invalid metaclass syntax, expected properties definition, got $body");
   }
+  
+  def t = ctx.Env.Define(<[ decl:
+    public interface IEmpty {
+    }
+  ]>);
+  t.Compile();
+  
   <[ () ]>
 }
 

Modified: nemerle/trunk/ncc/testsuite/positive/macroprog.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/macroprog.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/macroprog.n	Mon Apr 10 21:08:02 2006
@@ -67,6 +67,8 @@
     assert (inline_meta (1, "").X == 1);
     assert (inline_meta (2, "a").Y == "a");
     
+    _ = null : IEmpty;
+    
     System.Console.WriteLine (ulongLiteral ());
   }
 }



More information about the svn mailing list