Browse Source

Merge pull request #3533 from MSchmoecker/fix-disabled-optional-arguments

Fix incorrect argument removal if OptionalArguments is false
pull/3538/head
Siegfried Pammer 5 months ago committed by GitHub
parent
commit
6400b32c2b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
  2. 11
      ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs
  3. 19
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/OptionalArgumentsDisabled.cs
  4. 3
      ICSharpCode.Decompiler/CSharp/CallBuilder.cs

1
ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj

@ -252,6 +252,7 @@
<Compile Include="TestCases\Pretty\ConstantsTests.cs" /> <Compile Include="TestCases\Pretty\ConstantsTests.cs" />
<Compile Include="TestCases\Pretty\CS73_StackAllocInitializers.cs" /> <Compile Include="TestCases\Pretty\CS73_StackAllocInitializers.cs" />
<Compile Include="TestCases\Pretty\OptionalArguments.cs" /> <Compile Include="TestCases\Pretty\OptionalArguments.cs" />
<Compile Include="TestCases\Pretty\OptionalArgumentsDisabled.cs" />
<Compile Include="TestCases\Pretty\CustomShortCircuitOperators.cs" /> <Compile Include="TestCases\Pretty\CustomShortCircuitOperators.cs" />
<Compile Include="TestCases\Pretty\ReduceNesting.cs" /> <Compile Include="TestCases\Pretty\ReduceNesting.cs" />
<Compile Include="TestCases\Pretty\InterfaceTests.cs" /> <Compile Include="TestCases\Pretty\InterfaceTests.cs" />

11
ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs

@ -599,6 +599,17 @@ namespace ICSharpCode.Decompiler.Tests
await RunForLibrary(cscOptions: cscOptions); await RunForLibrary(cscOptions: cscOptions);
} }
[Test]
public async Task OptionalArgumentsDisabled([ValueSource(nameof(defaultOptions))] CompilerOptions cscOptions)
{
await RunForLibrary(
cscOptions: cscOptions,
configureDecompiler: settings => {
settings.OptionalArguments = false;
}
);
}
[Test] [Test]
public async Task Comparisons([ValueSource(nameof(defaultOptions))] CompilerOptions cscOptions) public async Task Comparisons([ValueSource(nameof(defaultOptions))] CompilerOptions cscOptions)
{ {

19
ICSharpCode.Decompiler.Tests/TestCases/Pretty/OptionalArgumentsDisabled.cs

@ -0,0 +1,19 @@
namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
{
public class OptionalArgumentsDisabled
{
public void Test()
{
MixedArguments("123", 0, 0);
OnlyOptionalArguments(0, 0);
}
public void MixedArguments(string msg, int a = 0, int b = 0)
{
}
public void OnlyOptionalArguments(int a = 0, int b = 0)
{
}
}
}

3
ICSharpCode.Decompiler/CSharp/CallBuilder.cs

@ -967,7 +967,8 @@ namespace ICSharpCode.Decompiler.CSharp
} }
else else
{ {
firstOptionalArgumentIndex = -2; if (firstOptionalArgumentIndex != -1)
firstOptionalArgumentIndex = -2;
} }
if (expressionBuilder.settings.ExpandParamsArguments && parameter.IsParams && i + 1 == callArguments.Count && argumentToParameterMap == null) if (expressionBuilder.settings.ExpandParamsArguments && parameter.IsParams && i + 1 == callArguments.Count && argumentToParameterMap == null)
{ {

Loading…
Cancel
Save