Skip to content

Commit b1a617c

Browse files
AssignVariableNames: Fix ArgumentException
1 parent a85e5b5 commit b1a617c

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

ICSharpCode.Decompiler/IL/Transforms/AssignVariableNames.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -209,19 +209,21 @@ static bool IsSetOrEventAccessor(IMethod method)
209209

210210
foreach (var (i, p) in function.Parameters.WithIndex())
211211
{
212+
string name = string.IsNullOrWhiteSpace(p.Name) ? variables[i].Name : p.Name;
213+
212214
if (function.Kind is ILFunctionKind.Delegate or ILFunctionKind.ExpressionTree
213-
&& CSharpDecompiler.IsTransparentIdentifier(p.Name))
215+
&& CSharpDecompiler.IsTransparentIdentifier(name))
214216
{
215-
AddExistingName(reservedVariableNames, p.Name);
217+
AddExistingName(reservedVariableNames, name);
216218
if (variables.TryGetValue(i, out var v))
217-
variableMapping[v] = p.Name;
219+
variableMapping[v] = name;
218220
}
219-
string nameWithoutNumber = SplitName(p.Name, out int newIndex);
221+
string nameWithoutNumber = SplitName(name, out int newIndex);
220222
if (!parentScope.IsReservedVariableName(nameWithoutNumber, out _))
221223
{
222-
AddExistingName(reservedVariableNames, p.Name);
224+
AddExistingName(reservedVariableNames, name);
223225
if (variables.TryGetValue(i, out var v))
224-
variableMapping[v] = p.Name;
226+
variableMapping[v] = name;
225227
}
226228
else if (variables.TryGetValue(i, out var v))
227229
{
@@ -340,7 +342,7 @@ public string AssignName(ILVariable v)
340342
}
341343
// update the last used index
342344
ReserveVariableName(nameWithoutNumber, newIndex);
343-
variableMapping.Add(v, newName);
345+
variableMapping[v] = newName;
344346
return newName;
345347
}
346348

0 commit comments

Comments
 (0)