Skip to content

Commit 40b6f0c

Browse files
committed
Use appropriate type for helper variables introduced for named arguments.
1 parent b0309ca commit 40b6f0c

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

ICSharpCode.Decompiler/IL/Instructions/ILFunction.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,18 @@ public void RunTransforms(IEnumerable<IILTransform> transforms, ILTransformConte
229229

230230
public ILVariable RegisterVariable(VariableKind kind, IType type, string name = null)
231231
{
232-
var variable = new ILVariable(kind, type);
232+
return RegisterVariable(kind, type, type.GetStackType(), name);
233+
}
234+
235+
public ILVariable RegisterVariable(VariableKind kind, StackType stackType, string name = null)
236+
{
237+
var type = Method.Compilation.FindType(stackType.ToKnownTypeCode());
238+
return RegisterVariable(kind, type, stackType, name);
239+
}
240+
241+
ILVariable RegisterVariable(VariableKind kind, IType type, StackType stackType, string name = null)
242+
{
243+
var variable = new ILVariable(kind, type, stackType);
233244
if (string.IsNullOrWhiteSpace(name)) {
234245
name = "I_" + (helperVariableCount++);
235246
variable.HasGeneratedName = true;

ICSharpCode.Decompiler/IL/Transforms/NamedArgumentTransform.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ internal static void IntroduceNamedArgument(ILInstruction arg, ILTransformContex
7979
{
8080
var call = (CallInstruction)arg.Parent;
8181
Debug.Assert(context.Function == call.Ancestors.OfType<ILFunction>().First());
82-
var v = context.Function.RegisterVariable(VariableKind.NamedArgument, arg.InferType(context.TypeSystem));
82+
var v = context.Function.RegisterVariable(VariableKind.NamedArgument, arg.ResultType);
8383
context.Step($"Introduce named argument '{v.Name}'", arg);
8484
if (!(call.Parent is Block namedArgBlock) || namedArgBlock.Kind != BlockKind.CallWithNamedArgs) {
8585
// create namedArgBlock:

0 commit comments

Comments
 (0)