From 516e1dacb03728d6fc24534a03795649ac7756aa Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 20 Sep 2017 21:37:43 +0200 Subject: [PATCH] Set CSharpInvocationResolveResult.IsExpandedForm to true, if a params array expansion was performed. --- ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs index 68eb7c4af..07919f8a1 100644 --- a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs @@ -1131,6 +1131,7 @@ namespace ICSharpCode.Decompiler.CSharp var arguments = new List(method.Parameters.Count); Debug.Assert(inst.Arguments.Count == firstParamIndex + method.Parameters.Count); var expectedParameters = method.Parameters.ToList(); + bool isExpandedForm = false; for (int i = 0; i < method.Parameters.Count; i++) { var parameter = expectedParameters[i]; var arg = Translate(inst.Arguments[firstParamIndex + i]); @@ -1156,6 +1157,7 @@ namespace ICSharpCode.Decompiler.CSharp } } if (IsUnambiguousCall(inst, target, method, Array.Empty(), expandedArguments) == OverloadResolutionErrors.None) { + isExpandedForm = true; expectedParameters = expandedParameters; arguments = expandedArguments.SelectList(a => new TranslatedExpression(a.Expression.Detach())); continue; @@ -1185,7 +1187,7 @@ namespace ICSharpCode.Decompiler.CSharp var argumentResolveResults = arguments.Select(arg => arg.ResolveResult).ToList(); - ResolveResult rr = new CSharpInvocationResolveResult(target.ResolveResult, method, argumentResolveResults); + ResolveResult rr = new CSharpInvocationResolveResult(target.ResolveResult, method, argumentResolveResults, isExpandedForm: isExpandedForm); if (inst.OpCode == OpCode.NewObj) { var argumentExpressions = arguments.SelectArray(arg => arg.Expression);