Merge branch 'BigIntegerParse'
[mono.git] / mcs / mcs / ikvm.cs
index 3204ed11a085b849c962ef4b2cc31b8c75b322dc..0d3232c75ae40e4a1f69cf54059a031515b54988 100644 (file)
@@ -124,6 +124,9 @@ namespace Mono.CSharp
                        Namespace ns = targetNamespace;
                        string prev_namespace = null;
                        foreach (var t in types) {
+                               if (!t.__IsTypeForwarder)
+                                       continue;
+
                                // IsMissing tells us the type has been forwarded and target assembly is missing 
                                if (!t.__IsMissing)
                                        continue;
@@ -282,6 +285,8 @@ namespace Mono.CSharp
                        }
                }
 
+               public AssemblyDefinitionStatic CompiledAssembly {  get; set; }
+
                public Universe Domain {
                        get {
                                return domain;
@@ -365,6 +370,14 @@ namespace Mono.CSharp
                                return version_mismatch;
                        }
 
+                       //
+                       // Recursive reference to compiled assembly checks name only. Any other
+                       // details (PublicKey, Version, etc) are not yet known hence cannot be checked
+                       //
+                       ParsedAssemblyName referenced_assembly;
+                       if (Fusion.ParseAssemblyName (args.Name, out referenced_assembly) == ParseAssemblyResult.OK && CompiledAssembly.Name == referenced_assembly.Name)
+                               return CompiledAssembly.Builder;
+
                        // AssemblyReference has not been found in the domain
                        // create missing reference and continue
                        return domain.CreateMissingAssembly (args.Name);