diff --git a/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs b/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs index da8730287..4a8342cd7 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs @@ -165,11 +165,9 @@ namespace ICSharpCode.Decompiler.IL.Transforms static IEnumerable CollectAllLowerCaseTypeNames(ITypeDefinition type) { - - foreach (var item in type.ParentModule.TopLevelTypeDefinitions) + var ns = type.ParentModule.Compilation.GetNamespaceByFullName(type.Namespace); + foreach (var item in ns.Types) { - if (item.Namespace != type.Namespace) - continue; if (IsLowerCase(item.Name)) yield return item.Name; } diff --git a/ICSharpCode.Decompiler/TypeSystem/TypeSystemExtensions.cs b/ICSharpCode.Decompiler/TypeSystem/TypeSystemExtensions.cs index ba3958a0b..9da26dbe7 100644 --- a/ICSharpCode.Decompiler/TypeSystem/TypeSystemExtensions.cs +++ b/ICSharpCode.Decompiler/TypeSystem/TypeSystemExtensions.cs @@ -748,5 +748,21 @@ namespace ICSharpCode.Decompiler.TypeSystem return new ParameterizedType(td, td.TypeArguments); } } + + public static INamespace GetNamespaceByFullName(this ICompilation compilation, string name) + { + if (string.IsNullOrEmpty(name)) + return compilation.RootNamespace; + var parts = name.Split('.'); + var ns = compilation.RootNamespace; + foreach (var part in parts) + { + var child = ns.GetChildNamespace(part); + if (child == null) + return null; + ns = child; + } + return ns; + } } }