if (targs != null) {
foreach (var ta in targs) {
- var b_type = ta.BaseType;
- if (b_type.BuiltinType != BuiltinTypeSpec.Type.Object && b_type.BuiltinType != BuiltinTypeSpec.Type.ValueType)
- cache.AddBaseType (b_type);
-
var tps = ta as TypeParameterSpec;
- var ifaces = tps != null ? tps.InterfacesDefined : ta.Interfaces;
+ IList<TypeSpec> ifaces;
+ if (tps != null) {
+ var b_type = tps.GetEffectiveBase ();
+ if (b_type != null && b_type.BuiltinType != BuiltinTypeSpec.Type.Object && b_type.BuiltinType != BuiltinTypeSpec.Type.ValueType)
+ cache.AddBaseType (b_type);
+
+ ifaces = tps.InterfacesDefined;
+ } else {
+ ifaces = ta.Interfaces;
+ }
if (ifaces != null) {
foreach (var iface_type in ifaces) {
{
C<X, X, X>.Test (new X ());
}
+
+ public int Prop {
+ get {
+ return 5;
+ }
+ }
}
class Y
public static void Test (T3 t3)
{
X.Foo (t3);
+ var g = t3.Prop;
}
}
\ No newline at end of file
</type>\r
<type name="C`3[T1,T2,T3]">\r
<method name="Void Test(T3)" attrs="150">\r
- <size>13</size>\r
+ <size>27</size>\r
</method>\r
<method name="Void .ctor()" attrs="6278">\r
<size>7</size>\r
</method>\r
</type>\r
+ <type name="X">\r
+ <method name="Int32 get_Prop()" attrs="2182">\r
+ <size>10</size>\r
+ </method>\r
+ </type>\r
</test>\r
<test name="gtest-anontype-01.cs">\r
<type name="Test">\r