[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