[svn] r5995: nemerle/trunk/ncc: generation/ILEmitter.n
testsuite/positive/generics.n
malekith
svnadmin at nemerle.org
Mon Dec 5 22:58:07 CET 2005
Log:
Pass correct type (this or base) to this()/base() invocations. Resolves #583.
Author: malekith
Date: Mon Dec 5 22:58:05 2005
New Revision: 5995
Modified:
nemerle/trunk/ncc/generation/ILEmitter.n
nemerle/trunk/ncc/testsuite/positive/generics.n
Modified: nemerle/trunk/ncc/generation/ILEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/ILEmitter.n (original)
+++ nemerle/trunk/ncc/generation/ILEmitter.n Mon Dec 5 22:58:05 2005
@@ -950,7 +950,12 @@
emit_parms (ctor_params);
Mark (expr.loc);
- def ctr_inf = GetConstructorInfo (_type_of_this.BaseType, base_ctor);
+ def from =
+ if (base_ctor.DeclaringType.Equals (_parent_type_builder))
+ _type_of_this
+ else _type_of_this.BaseType;
+
+ def ctr_inf = GetConstructorInfo (from, base_ctor);
_ilg.Emit (OpCodes.Call, ctr_inf);
/* create a new object */
Modified: nemerle/trunk/ncc/testsuite/positive/generics.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/generics.n (original)
+++ nemerle/trunk/ncc/testsuite/positive/generics.n Mon Dec 5 22:58:05 2005
@@ -155,6 +155,29 @@
}
}
+namespace Bug583 {
+ class Blobby: System.Collections.ObjectModel.KeyedCollection[System.Object, System.Object]
+ {
+ public
+ this()
+ {
+ base()
+ }
+
+ private
+ this(_x: System.Int32)
+ {
+ this()
+ }
+
+ protected override
+ GetKeyForItem(item: System.Object): System.Object
+ {
+ item
+ }
+ }
+}
+
/*
BEGIN-OUTPUT
System.Collections.Generic.List`1[System.Int32]
More information about the svn
mailing list