Browse Source

Merge pull request #3504 from MSchmoecker/fix-static-decompile-with-instance-signature

Fix incorrect method match for static methods with instance signature
pull/3506/head
Siegfried Pammer 2 weeks ago committed by GitHub
parent
commit
eafccdb278
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
  2. 6
      ICSharpCode.Decompiler.Tests/ILPrettyTestRunner.cs
  3. 9
      ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue3504.cs
  4. 36
      ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue3504.il
  5. 2
      ICSharpCode.Decompiler/TypeSystem/MetadataModule.cs

2
ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj

@ -96,6 +96,7 @@ @@ -96,6 +96,7 @@
<None Include="TestCases\ILPretty\Issue2260SwitchString.il" />
<None Include="TestCases\ILPretty\Issue3442.il" />
<None Include="TestCases\ILPretty\Issue3466.il" />
<None Include="testcases\ilpretty\Issue3504.il" />
<None Include="TestCases\ILPretty\MonoFixed.il" />
<None Include="TestCases\Correctness\NonGenericConstrainedCallVirt.il" />
<None Include="TestCases\ILPretty\UnknownTypes.cs" />
@ -138,6 +139,7 @@ @@ -138,6 +139,7 @@
<Compile Include="TestCases\ILPretty\Issue3421.cs" />
<Compile Include="TestCases\ILPretty\Issue3442.cs" />
<Compile Include="TestCases\ILPretty\Issue3466.cs" />
<None Include="TestCases\ILPretty\Issue3504.cs" />
<Compile Include="TestCases\ILPretty\MonoFixed.cs" />
<Compile Include="TestCases\Pretty\Comparisons.cs" />
<Compile Include="TestCases\Pretty\GloballyQualifiedTypeInStringInterpolation.cs" />

6
ICSharpCode.Decompiler.Tests/ILPrettyTestRunner.cs

@ -225,6 +225,12 @@ namespace ICSharpCode.Decompiler.Tests @@ -225,6 +225,12 @@ namespace ICSharpCode.Decompiler.Tests
await Run();
}
[Test]
public async Task Issue3504()
{
await Run();
}
[Test]
public async Task Issue2260SwitchString()
{

9
ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue3504.cs

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
using System;
internal class Issue3504
{
private void Method(Console console)
{
console.WriteLine("Hello.");
}
}

36
ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue3504.il

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
.class private auto ansi beforefieldinit Issue3504
extends [System.Runtime]System.Object
{
// Methods
.method private hidebysig
instance void Method (class [System.Console]System.Console console) cil managed
{
// Method begins at RVA 0x2050
// Header size: 1
// Code size: 13 (0xd)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.1
IL_0002: ldstr "Hello."
IL_0007: call instance void [System.Console]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ret
} // end of method Issue3504::Method
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x205e
// Header size: 1
// Code size: 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [System.Runtime]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method Issue3504::.ctor
} // end of class Issue3504

2
ICSharpCode.Decompiler/TypeSystem/MetadataModule.cs

@ -535,6 +535,8 @@ namespace ICSharpCode.Decompiler.TypeSystem @@ -535,6 +535,8 @@ namespace ICSharpCode.Decompiler.TypeSystem
{
if (m.TypeParameters.Count != signature.GenericParameterCount)
continue;
if (signature.Header.IsInstance != !m.IsStatic)
continue;
if (CompareSignatures(m.Parameters, parameterTypes) && CompareTypes(m.ReturnType, signature.ReturnType))
{
method = m;

Loading…
Cancel
Save