[svn] r6205: nemerle/trunk/ncc: external/LibrariesLoader.n
generation/HierarchyEmitter.n
malekith
svnadmin at nemerle.org
Fri Apr 28 00:39:48 CEST 2006
Log:
Use a proper way of finding out superclass in NetType. Add a hack to prevent saving S.Array as supertype in assembly, but pretend it was saved this way. Should fix MS.NET build.
Author: malekith
Date: Fri Apr 28 00:39:47 2006
New Revision: 6205
Modified:
nemerle/trunk/ncc/external/LibrariesLoader.n
nemerle/trunk/ncc/generation/HierarchyEmitter.n
Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n (original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n Fri Apr 28 00:39:47 2006
@@ -625,6 +625,11 @@
(typarms, tenv, direct_supertypes, supertypes) =
TyCodec.ReflectTypeBuilder (library, tenv, system_type);
+ when (h.Namespace == "Nemerle.Builtins" && h.Name.StartsWith ("Array")) {
+ direct_supertypes = [InternalType.Array];
+ supertypes ::= InternalType.Array;
+ }
+
foreach (t in supertypes)
supertype_map = supertype_map.Add (t.tycon, t);
@@ -1078,13 +1083,13 @@
}
}
- [Nemerle.Memoize (InvalidValue = null)]
public override SuperClass () : option [TypeInfo]
{
- if (system_type.BaseType == null)
- None ()
- else
- Some (library.TypeInfoOfType (system_type.BaseType))
+ match (direct_supertypes) {
+ | MType.Class (tc, _) :: _ => Some (tc)
+ | [] => None ()
+ | _ => Util.ice ()
+ }
}
public override GetMembers () : list [IMember]
Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n (original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n Fri Apr 28 00:39:47 2006
@@ -607,8 +607,12 @@
def (extends_class, implements_interfaces) = determine_inheritance ();
// save inheritance information in our type builder
- when (extends_class != null)
+ when (extends_class != null) {
+ if (FullName.StartsWith ("Nemerle.Builtins.Array"))
+ type_builder.SetParent (SystemType.Object);
+ else
type_builder.SetParent (extends_class);
+ }
foreach (inter in implements_interfaces)
type_builder.AddInterfaceImplementation (inter);
More information about the svn
mailing list