Better import of contraints with missing references
authorMarek Safar <marek.safar@gmail.com>
Tue, 17 Apr 2012 17:28:09 +0000 (18:28 +0100)
committerMarek Safar <marek.safar@gmail.com>
Tue, 17 Apr 2012 17:31:14 +0000 (18:31 +0100)
mcs/mcs/generic.cs
mcs/mcs/import.cs

index 633b834ebec7e538487acedc538eda8955c3f775..1a3c646ae3631a3282d14f30431544dbd8eafbe9 100644 (file)
@@ -2279,7 +2279,7 @@ namespace Mono.CSharp {
 
                //
                // Checks all type arguments againts type parameters constraints
-               // NOTE: It can run in probing mode when `mc' is null
+               // NOTE: It can run in probing mode when `this.mc' is null
                //
                public bool CheckAll (MemberSpec context, TypeSpec[] targs, TypeParameterSpec[] tparams, Location loc)
                {
index 541a407fa0444fc6efa4d3467444d6bd5ed358cf..bcf5a68c7a366d79f76b291b8624794b2a945d33 100644 (file)
@@ -835,6 +835,13 @@ namespace Mono.CSharp
 
                        import_cache.Add (type, spec);
 
+                       if (kind == MemberKind.TypeParameter) {
+                               if (canImportBaseType)
+                                       ImportTypeParameterTypeConstraints ((TypeParameterSpec) spec, type);
+
+                               return spec;
+                       }
+
                        //
                        // Two stage setup as the base type can be inflated declaring type or
                        // another nested type inside same declaring type which has not been
@@ -992,7 +999,6 @@ namespace Mono.CSharp
                                        ImportTypeParameterTypeConstraints (tp, tp.GetMetaInfo ());
                                }
                        }
-
                }
 
                protected void ImportTypes (MetaType[] types, Namespace targetNamespace, bool hasExtensionTypes)