diff --git a/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs b/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs index e877b951a..bd39b6c1a 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs @@ -378,11 +378,12 @@ namespace ICSharpCode.Decompiler.IL.Transforms if (function == null) throw new ArgumentNullException(nameof(function)); var reservedVariableNames = new Dictionary(); - foreach (var v in function.Descendants.OfType().SelectMany(m => m.Variables)) { + var rootFunction = function.Ancestors.OfType().Single(f => f.Parent == null); + foreach (var v in rootFunction.Descendants.OfType().SelectMany(m => m.Variables)) { if (v != existingVariable) AddExistingName(reservedVariableNames, v.Name); } - foreach (var f in function.CecilMethod.DeclaringType.Fields.Select(f => f.Name)) + foreach (var f in rootFunction.CecilMethod.DeclaringType.Fields.Select(f => f.Name)) AddExistingName(reservedVariableNames, f); string baseName = GetNameFromInstruction(valueContext);