Browse Source

AssignVariableNames: Fix ArgumentException

net10upgrade
Siegfried Pammer 2 months ago
parent
commit
b1a617c827
  1. 16
      ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs

16
ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs

@ -209,19 +209,21 @@ namespace ICSharpCode.Decompiler.IL.Transforms
foreach (var (i, p) in function.Parameters.WithIndex()) foreach (var (i, p) in function.Parameters.WithIndex())
{ {
string name = string.IsNullOrWhiteSpace(p.Name) ? variables[i].Name : p.Name;
if (function.Kind is ILFunctionKind.Delegate or ILFunctionKind.ExpressionTree if (function.Kind is ILFunctionKind.Delegate or ILFunctionKind.ExpressionTree
&& CSharpDecompiler.IsTransparentIdentifier(p.Name)) && CSharpDecompiler.IsTransparentIdentifier(name))
{ {
AddExistingName(reservedVariableNames, p.Name); AddExistingName(reservedVariableNames, name);
if (variables.TryGetValue(i, out var v)) if (variables.TryGetValue(i, out var v))
variableMapping[v] = p.Name; variableMapping[v] = name;
} }
string nameWithoutNumber = SplitName(p.Name, out int newIndex); string nameWithoutNumber = SplitName(name, out int newIndex);
if (!parentScope.IsReservedVariableName(nameWithoutNumber, out _)) if (!parentScope.IsReservedVariableName(nameWithoutNumber, out _))
{ {
AddExistingName(reservedVariableNames, p.Name); AddExistingName(reservedVariableNames, name);
if (variables.TryGetValue(i, out var v)) if (variables.TryGetValue(i, out var v))
variableMapping[v] = p.Name; variableMapping[v] = name;
} }
else if (variables.TryGetValue(i, out var v)) else if (variables.TryGetValue(i, out var v))
{ {
@ -340,7 +342,7 @@ namespace ICSharpCode.Decompiler.IL.Transforms
} }
// update the last used index // update the last used index
ReserveVariableName(nameWithoutNumber, newIndex); ReserveVariableName(nameWithoutNumber, newIndex);
variableMapping.Add(v, newName); variableMapping[v] = newName;
return newName; return newName;
} }

Loading…
Cancel
Save