[svn] r6427: nemerle/trunk/ncc/hierarchy: GlobalEnv.n TypeBuilder.n

nazgul svnadmin at nemerle.org
Tue Jul 4 22:18:00 CEST 2006


Log:
Allow disabling fixup in Define methods

Author: nazgul
Date: Tue Jul  4 22:17:57 2006
New Revision: 6427

Modified:
   nemerle/trunk/ncc/hierarchy/GlobalEnv.n
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n

Modified: nemerle/trunk/ncc/hierarchy/GlobalEnv.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/GlobalEnv.n	(original)
+++ nemerle/trunk/ncc/hierarchy/GlobalEnv.n	Tue Jul  4 22:17:57 2006
@@ -1,4 +1,4 @@
-ďťż/*
+/*
  * Copyright (c) 2003-2005 The University of Wroclaw.
  * All rights reserved.
  *
@@ -138,21 +138,28 @@
       GlobalEnv (o, c, n, syn_keys, keys, ops, nameTree)
     }
     
-    
     public Define (td : PT.ClassMember) : TypeBuilder
     {
+      Define (td, true)
+    }
+    
+    public Define (td : PT.ClassMember, do_fixup : bool) : TypeBuilder
+    {
+      match(td) {
       | PT.ClassMember.TypeDeclaration (Delegate (header)) =>
         def tb = Delegates.GenerateDelegateClass (this, null, td.modifiers, header);
         tb
       
       | PT.ClassMember.TypeDeclaration (td) =>
         def tyinfo = Manager.NameTree.AddType (null, current_namespace, td);
+          when (do_fixup)
         tyinfo.FixupDefinedClass ();
         tyinfo
       | _ =>
         Message.Error ("only types can be defined in global namespaces");
         null
     }
+    }
     
     public GetType (name : list [string], from : TypeBuilder, args_count : int) : TypeInfo
     {

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Tue Jul  4 22:17:57 2006
@@ -407,7 +407,7 @@
     }
   }
   
-  internal DefineNestedType (td : PT.ClassMember, do_fixup : bool) : TypeBuilder
+  public DefineNestedType (td : PT.ClassMember, do_fixup : bool) : TypeBuilder
   {
     match (td) {
       | PT.ClassMember.TypeDeclaration (td) =>
@@ -469,20 +469,28 @@
   }
 
 
+  public Define (f : PT.ClassMember) : void
+  {
+    Define (f, true)
+  }
+
   /**
    * Adds a definition to this type
    */
-  public Define (f : PT.ClassMember) : void
+  public Define (f : PT.ClassMember, do_fixup : bool) : void
   {
+    match (f) {
     | PT.ClassMember.TypeDeclaration (Delegate (header) as td) =>
       _ = Delegates.GenerateDelegateClass (this.GlobalEnv, this, td.modifiers, header);
     
     | PT.ClassMember.TypeDeclaration (td) =>
       def tyinfo = Manager.NameTree.AddType (this, namespace_nd, td);
+        when (do_fixup)
       tyinfo.FixupDefinedClass ();
 
     | _ => ignore (DefineAndReturn (f))
   }
+  }
 
 
   /**



More information about the svn mailing list