X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Fikvm.cs;h=0d3232c75ae40e4a1f69cf54059a031515b54988;hb=c39718bbb394fe97281e6e64945b4572bef29121;hp=3204ed11a085b849c962ef4b2cc31b8c75b322dc;hpb=a2850fc7dae0cf969b5d680a20496ac16526dcb8;p=mono.git diff --git a/mcs/mcs/ikvm.cs b/mcs/mcs/ikvm.cs index 3204ed11a08..0d3232c75ae 100644 --- a/mcs/mcs/ikvm.cs +++ b/mcs/mcs/ikvm.cs @@ -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);