Skip to content

Commit 052466f

Browse files
Add test case
1 parent 6c00c13 commit 052466f

File tree

4 files changed

+92
-1
lines changed

4 files changed

+92
-1
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
<None Include="TestCases\ILPretty\GuessAccessors.il" />
101101
<None Include="TestCases\ILPretty\Issue2260SwitchString.il" />
102102
<None Include="TestCases\ILPretty\Issue3442.il" />
103+
<None Include="testcases\ilpretty\Issue3465.il" />
103104
<None Include="TestCases\ILPretty\Issue3466.il" />
104105
<None Include="testcases\ilpretty\Issue3504.il" />
105106
<None Include="testcases\ilpretty\Issue3524.il" />
@@ -143,6 +144,7 @@
143144
<Compile Include="ProjectDecompiler\WholeProjectDecompilerTests.cs" />
144145
<Compile Include="TestAssemblyResolver.cs" />
145146
<Compile Include="TestCases\ILPretty\Issue3421.cs" />
147+
<Compile Include="TestCases\ILPretty\Issue3465.cs" />
146148
<Compile Include="TestCases\ILPretty\Issue3442.cs" />
147149
<Compile Include="TestCases\ILPretty\Issue3466.cs" />
148150
<Compile Include="TestCases\ILPretty\Issue3524.cs" />

ICSharpCode.Decompiler.Tests/ILPrettyTestRunner.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,12 @@ public async Task Issue3442()
219219
await Run();
220220
}
221221

222+
[Test]
223+
public async Task Issue3465()
224+
{
225+
await Run();
226+
}
227+
222228
[Test]
223229
public async Task Issue3466()
224230
{
@@ -319,7 +325,7 @@ async Task Run([CallerMemberName] string testName = null, DecompilerSettings set
319325
var executable = await Tester.AssembleIL(ilFile, assemblerOptions).ConfigureAwait(false);
320326
var decompiled = await Tester.DecompileCSharp(executable, settings).ConfigureAwait(false);
321327

322-
CodeAssert.FilesAreEqual(csFile, decompiled);
328+
CodeAssert.FilesAreEqual(csFile, decompiled, ["EXPECTED_OUTPUT"]);
323329
Tester.RepeatOnIOError(() => File.Delete(decompiled));
324330
}
325331

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
#if EXPECTED_OUTPUT
3+
using System.Runtime.CompilerServices;
4+
#endif
5+
namespace Issue3465
6+
{
7+
internal class Program
8+
{
9+
private static Program programNull;
10+
11+
private static Program GetProgram()
12+
{
13+
return null;
14+
}
15+
16+
private static bool Test3465()
17+
{
18+
Program program = GetProgram();
19+
Program program2 = programNull;
20+
return System.Runtime.CompilerServices.Unsafe.As<Program, UIntPtr>(ref program) > System.Runtime.CompilerServices.Unsafe.As<Program, UIntPtr>(ref program2);
21+
}
22+
}
23+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
.class private auto ansi '<Module>'
2+
{
3+
} // end of class <Module>
4+
5+
.class private auto ansi beforefieldinit Issue3465.Program
6+
extends [System.Runtime]System.Object
7+
{
8+
// Fields
9+
.field private static class Issue3465.Program programNull
10+
11+
// Methods
12+
.method private hidebysig static
13+
class Issue3465.Program GetProgram () cil managed
14+
{
15+
// Method begins at RVA 0x2050
16+
// Header size: 1
17+
// Code size: 2 (0x2)
18+
.maxstack 8
19+
20+
IL_0000: ldnull
21+
IL_0001: ret
22+
} // end of method Issue3465.Program::GetProgram
23+
24+
.method private hidebysig static
25+
bool Test3465 () cil managed
26+
{
27+
// Method begins at RVA 0x2054
28+
// Header size: 12
29+
// Code size: 7 (0x7)
30+
.maxstack 1
31+
.locals init (
32+
[0] bool
33+
)
34+
35+
IL_0000: call class Issue3465.Program Issue3465.Program::GetProgram()
36+
IL_0001: ldsfld class Issue3465.Program Issue3465.Program::programNull
37+
cgt.un
38+
IL_0002: stloc.0
39+
IL_0003: br.s IL_0005
40+
41+
IL_0005: ldloc.0
42+
IL_0006: ret
43+
} // end of method Program::Test3465
44+
45+
.method public hidebysig specialname rtspecialname
46+
instance void .ctor () cil managed
47+
{
48+
// Method begins at RVA 0x2067
49+
// Header size: 1
50+
// Code size: 8 (0x8)
51+
.maxstack 8
52+
53+
IL_0000: ldarg.0
54+
IL_0001: call instance void [System.Runtime]System.Object::.ctor()
55+
IL_0006: nop
56+
IL_0007: ret
57+
} // end of method Issue3465.Program::.ctor
58+
59+
} // end of class Issue3465.Program
60+

0 commit comments

Comments
 (0)