Browse Source

Clean up CallBuilder.

pull/1236/head
Siegfried Pammer 7 years ago
parent
commit
77f4edfba8
  1. 10
      ICSharpCode.Decompiler/CSharp/CallBuilder.cs

10
ICSharpCode.Decompiler/CSharp/CallBuilder.cs

@ -386,8 +386,7 @@ namespace ICSharpCode.Decompiler.CSharp
parameter = method.Parameters[i - firstParamIndex]; parameter = method.Parameters[i - firstParamIndex];
} }
var arg = expressionBuilder.Translate(callArguments[i], parameter.Type); var arg = expressionBuilder.Translate(callArguments[i], parameter.Type);
if (arg.ResolveResult.IsCompileTimeConstant && !method.DeclaringType.IsKnownType(KnownTypeCode.NullableOfT) if (IsPrimitiveValueThatShouldHaveNamedArgument(arg, method)) {
&& arg.ResolveResult.Type.IsKnownType(KnownTypeCode.Boolean)) {
isPrimitiveValue.Set(arguments.Count); isPrimitiveValue.Set(arguments.Count);
} }
if (IsOptionalArgument(parameter, arg)) { if (IsOptionalArgument(parameter, arg)) {
@ -437,6 +436,13 @@ namespace ICSharpCode.Decompiler.CSharp
return list; return list;
} }
private bool IsPrimitiveValueThatShouldHaveNamedArgument(TranslatedExpression arg, IMethod method)
{
if (!arg.ResolveResult.IsCompileTimeConstant || method.DeclaringType.IsKnownType(KnownTypeCode.NullableOfT))
return false;
return arg.ResolveResult.Type.IsKnownType(KnownTypeCode.Boolean);
}
private bool TransformParamsArgument(ExpectedTargetDetails expectedTargetDetails, ResolveResult targetResolveResult, private bool TransformParamsArgument(ExpectedTargetDetails expectedTargetDetails, ResolveResult targetResolveResult,
IMethod method, IParameter parameter, TranslatedExpression arg, ref List<IParameter> expectedParameters, IMethod method, IParameter parameter, TranslatedExpression arg, ref List<IParameter> expectedParameters,
ref List<TranslatedExpression> arguments) ref List<TranslatedExpression> arguments)

Loading…
Cancel
Save