diff --git a/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs b/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs index 1fd9a91a3..6a035d6c2 100644 --- a/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs +++ b/ICSharpCode.Decompiler/Disassembler/DomExtensions.cs @@ -317,6 +317,10 @@ namespace ICSharpCode.Decompiler.Disassembler currentTypeRef = new Metadata.TypeReference(currentTypeRef.Module, (TypeReferenceHandle)currentTypeRef.ResolutionScope); } switch (currentTypeRef.ResolutionScope.Kind) { + case HandleKind.ModuleDefinition: + var modDef = metadata.GetModuleDefinition(); + output.Write(DisassemblerHelpers.Escape(metadata.GetString(modDef.Name))); + break; case HandleKind.ModuleReference: break; case HandleKind.AssemblyReference: diff --git a/ICSharpCode.Decompiler/Metadata/MetadataExtensions.cs b/ICSharpCode.Decompiler/Metadata/MetadataExtensions.cs index 24ec0947d..29900557d 100644 --- a/ICSharpCode.Decompiler/Metadata/MetadataExtensions.cs +++ b/ICSharpCode.Decompiler/Metadata/MetadataExtensions.cs @@ -119,16 +119,20 @@ namespace ICSharpCode.Decompiler.Metadata public static string ToILNameString(this FullTypeName typeName) { - var escapedName = Disassembler.DisassemblerHelpers.Escape(typeName.Name); - if (typeName.TypeParameterCount > 0) - escapedName += "`" + typeName.TypeParameterCount; + string escapedName; if (typeName.IsNested) { + escapedName = Disassembler.DisassemblerHelpers.Escape(typeName.Name); + if (typeName.TypeParameterCount > 0) + escapedName += "`" + typeName.TypeParameterCount; return $"{typeName.GetDeclaringType().ToILNameString()}/{escapedName}"; } else if (!string.IsNullOrEmpty(typeName.TopLevelTypeName.Namespace)) { - return $"{typeName.TopLevelTypeName.Namespace}.{escapedName}"; + escapedName = Disassembler.DisassemblerHelpers.Escape($"{typeName.TopLevelTypeName.Namespace}.{typeName.Name}"); + if (typeName.TypeParameterCount > 0) + escapedName += "`" + typeName.TypeParameterCount; } else { - return $"{escapedName}"; + escapedName = Disassembler.DisassemblerHelpers.Escape(typeName.Name); } + return escapedName; } public static AssemblyReferenceHandle GetDeclaringAssembly(this TypeReferenceHandle handle, MetadataReader reader)