.NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Siegfried Pammer eac591a7d7 Fix #1084: Decompiling constants of the target type 7 years ago
..
.gitignore Move UnsafeCode tests to pretty-tests (except for those that are not yet successful). 8 years ago
AnonymousTypes.cs Use out variable declarations where possible. 7 years ago
AnonymousTypes.il Use out variable declarations where possible. 7 years ago
AnonymousTypes.opt.il Use out variable declarations where possible. 7 years ago
AnonymousTypes.opt.roslyn.il Use out variable declarations where possible. 7 years ago
AnonymousTypes.roslyn.il Use out variable declarations where possible. 7 years ago
Async.cs Split Async tests 8 years ago
Async.il Split Async tests 8 years ago
Async.opt.il Split Async tests 8 years ago
Async.opt.roslyn.il Split Async tests 8 years ago
Async.roslyn.il Split Async tests 8 years ago
AsyncMain.cs Fix lines starting with spaces 7 years ago
AsyncMain.opt.roslyn.il Add support for async main method 7 years ago
AsyncMain.roslyn.il Add support for async main method 7 years ago
AutoProperties.cs
AutoProperties.opt.roslyn.il
AutoProperties.roslyn.il
CS6_StringInterpolation.cs Fix tests 7 years ago
CS6_StringInterpolation.opt.roslyn.il Fix tests 7 years ago
CS6_StringInterpolation.roslyn.il Fix tests 7 years ago
CS72_PrivateProtected.cs Add C# 7.2 private protected unit tests 8 years ago
CS72_PrivateProtected.opt.roslyn.il Add C# 7.2 private protected unit tests 8 years ago
CS72_PrivateProtected.roslyn.il Add C# 7.2 private protected unit tests 8 years ago
CheckedUnchecked.cs Remove redundant lambda casts. 8 years ago
CheckedUnchecked.il Add back CheckedUnchecked test case. 8 years ago
CheckedUnchecked.opt.il Add back CheckedUnchecked test case. 8 years ago
CheckedUnchecked.opt.roslyn.il Add back CheckedUnchecked test case. 8 years ago
CheckedUnchecked.roslyn.il Add back CheckedUnchecked test case. 8 years ago
CompoundAssignmentTest.cs Fix #1007: post-increment transform incorrect due to variable splitting. 8 years ago
CompoundAssignmentTest.il Fix #1007: post-increment transform incorrect due to variable splitting. 8 years ago
CompoundAssignmentTest.opt.il Fix #1007: post-increment transform incorrect due to variable splitting. 8 years ago
CompoundAssignmentTest.opt.roslyn.il Fix #1007: post-increment transform incorrect due to variable splitting. 8 years ago
CompoundAssignmentTest.roslyn.il Fix #1007: post-increment transform incorrect due to variable splitting. 8 years ago
DelegateConstruction.cs Fix #971: Anonymous method with missing parameter name 8 years ago
DelegateConstruction.il Fix #971: Anonymous method with missing parameter name 8 years ago
DelegateConstruction.opt.il Fix #971: Anonymous method with missing parameter name 8 years ago
DelegateConstruction.opt.roslyn.il Fix #971: Anonymous method with missing parameter name 8 years ago
DelegateConstruction.roslyn.il Fix #971: Anonymous method with missing parameter name 8 years ago
ExceptionHandling.cs Use mcs for correctness tests. 7 years ago
ExceptionHandling.il Add testcase. 8 years ago
ExceptionHandling.opt.il Add testcase. 8 years ago
ExceptionHandling.opt.roslyn.il Add testcase. 8 years ago
ExceptionHandling.roslyn.il Add testcase. 8 years ago
ExpressionTrees.cs Prefer '#if CS60' over '#if !LEGACY_CSC' 7 years ago
ExpressionTrees.il Extend expression tree tests 8 years ago
ExpressionTrees.opt.il Extend expression tree tests 8 years ago
ExpressionTrees.opt.roslyn.il Extend expression tree tests 8 years ago
ExpressionTrees.roslyn.il Extend expression tree tests 8 years ago
FixProxyCalls.cs Remove redundant lambda casts. 8 years ago
FixProxyCalls.il Add more tests. 8 years ago
FixProxyCalls.opt.il Add more tests. 8 years ago
FixProxyCalls.opt.roslyn.il Add more tests. 8 years ago
FixProxyCalls.roslyn.il Add more tests. 8 years ago
Generics.cs Fix #1048: Incorrect decompilation of code that creates multi-dimensional generic arrays. 7 years ago
Generics.il Fix #1048: Incorrect decompilation of code that creates multi-dimensional generic arrays. 7 years ago
Generics.opt.il Fix #1048: Incorrect decompilation of code that creates multi-dimensional generic arrays. 7 years ago
Generics.opt.roslyn.il Fix #1048: Incorrect decompilation of code that creates multi-dimensional generic arrays. 7 years ago
Generics.roslyn.il Fix #1048: Incorrect decompilation of code that creates multi-dimensional generic arrays. 7 years ago
HelloWorld.cs
HelloWorld.il
InitializerTests.cs Use mcs for correctness tests. 7 years ago
InitializerTests.il Fix #1042: Wrong decompile result for collection initializers 7 years ago
InitializerTests.opt.il Fix #1042: Wrong decompile result for collection initializers 7 years ago
InitializerTests.opt.roslyn.il Fix #1042: Wrong decompile result for collection initializers 7 years ago
InitializerTests.roslyn.il Fix #1042: Wrong decompile result for collection initializers 7 years ago
InlineAssignmentTest.cs Fix compound assignment and post-increment. 8 years ago
InlineAssignmentTest.il Fix compound assignment and post-increment. 8 years ago
InlineAssignmentTest.opt.il Fix compound assignment and post-increment. 8 years ago
InlineAssignmentTest.opt.roslyn.il Fix compound assignment and post-increment. 8 years ago
InlineAssignmentTest.roslyn.il Fix compound assignment and post-increment. 8 years ago
LiftedOperators.cs Fix two minor bugs in NullableLiftingTransform, and enable the LiftedOperators tests that are not affected by redundant casts. 8 years ago
LiftedOperators.il Add IL files for LiftedOperators test. 8 years ago
LiftedOperators.opt.il Add IL files for LiftedOperators test. 8 years ago
LiftedOperators.opt.roslyn.il Add IL files for LiftedOperators test. 8 years ago
LiftedOperators.roslyn.il Add IL files for LiftedOperators test. 8 years ago
Lock.cs Implement C# 2, C# 4 legacy and Roslyn lock patterns. 8 years ago
Lock.il Implement C# 2, C# 4 legacy and Roslyn lock patterns. 8 years ago
Lock.mcs.il Add missing il files to Lock pretty tests 7 years ago
Lock.opt.il Implement C# 2, C# 4 legacy and Roslyn lock patterns. 8 years ago
Lock.opt.mcs.il Add missing il files to Lock pretty tests 7 years ago
Lock.opt.roslyn.il Implement C# 2, C# 4 legacy and Roslyn lock patterns. 8 years ago
Lock.roslyn.il Implement C# 2, C# 4 legacy and Roslyn lock patterns. 8 years ago
Loops.cs Fix #1071: Sometimes uses Enumarator instead of Foreach 7 years ago
Loops.il Fix #979: Unrecognized foreach loop in unsafe code 8 years ago
Loops.mcs.il Fix #1071: Sometimes uses Enumarator instead of Foreach 7 years ago
Loops.opt.il Fix #979: Unrecognized foreach loop in unsafe code 8 years ago
Loops.opt.mcs.il Fix #1071: Sometimes uses Enumarator instead of Foreach 7 years ago
Loops.opt.roslyn.il Fix #979: Unrecognized foreach loop in unsafe code 8 years ago
Loops.roslyn.il Fix #979: Unrecognized foreach loop in unsafe code 8 years ago
NullPropagation.cs Fix unit tests 7 years ago
NullPropagation.opt.roslyn.il #1050: Add support for ?. operator applied to ref-parameters, and other cases where the compiler uses a generated ref local for the ?. operator. 7 years ago
NullPropagation.roslyn.il #1050: Add support for ?. operator applied to ref-parameters, and other cases where the compiler uses a generated ref local for the ?. operator. 7 years ago
PInvoke.cs Restore P/Invoke test. 8 years ago
PInvoke.il Restore P/Invoke test. 8 years ago
PInvoke.opt.il Restore P/Invoke test. 8 years ago
PInvoke.opt.roslyn.il Restore P/Invoke test. 8 years ago
PInvoke.roslyn.il Restore P/Invoke test. 8 years ago
PropertiesAndEvents.cs Fix #971: Anonymous method with missing parameter name 8 years ago
PropertiesAndEvents.il Fix #883: Incorrect decompilation of explicitly implemented events 8 years ago
PropertiesAndEvents.opt.il Fix #883: Incorrect decompilation of explicitly implemented events 8 years ago
PropertiesAndEvents.opt.roslyn.il Fix #883: Incorrect decompilation of explicitly implemented events 8 years ago
PropertiesAndEvents.roslyn.il Fix #883: Incorrect decompilation of explicitly implemented events 8 years ago
QueryExpressions.cs Fix build by adding casts to pretty test introduced by dd1c509651 8 years ago
QueryExpressions.il Fix #437: Decompilation of query expression loses material parentheses 8 years ago
QueryExpressions.opt.il Fix #437: Decompilation of query expression loses material parentheses 8 years ago
QueryExpressions.opt.roslyn.il Fix #437: Decompilation of query expression loses material parentheses 8 years ago
QueryExpressions.roslyn.il Fix #437: Decompilation of query expression loses material parentheses 8 years ago
Readme.txt
RefLocalsAndReturns.cs Add minimal pretty tests for ref structs. 7 years ago
RefLocalsAndReturns.opt.roslyn.il Add minimal pretty tests for ref structs. 7 years ago
RefLocalsAndReturns.roslyn.il Add minimal pretty tests for ref structs. 7 years ago
ShortCircuit.cs Fix short-circuiting operators when the rhs is a comparison with 0. 8 years ago
ShortCircuit.il Fix short-circuiting operators when the rhs is a comparison with 0. 8 years ago
ShortCircuit.opt.il Fix short-circuiting operators when the rhs is a comparison with 0. 8 years ago
ShortCircuit.opt.roslyn.il Fix short-circuiting operators when the rhs is a comparison with 0. 8 years ago
ShortCircuit.roslyn.il Fix short-circuiting operators when the rhs is a comparison with 0. 8 years ago
Switch.cs Fix #1084: Decompiling constants of the target type 7 years ago
Switch.il Fix #1084: Decompiling constants of the target type 7 years ago
Switch.opt.il Fix #1084: Decompiling constants of the target type 7 years ago
Switch.opt.roslyn.il Fix #1084: Decompiling constants of the target type 7 years ago
Switch.roslyn.il Fix #1084: Decompiling constants of the target type 7 years ago
TypeAnalysisTests.cs #1055: Use more type hints in ExpressionBuilder. 7 years ago
TypeAnalysisTests.il #1055: Use more type hints in ExpressionBuilder. 7 years ago
TypeAnalysisTests.opt.il #1055: Use more type hints in ExpressionBuilder. 7 years ago
TypeAnalysisTests.opt.roslyn.il #1055: Use more type hints in ExpressionBuilder. 7 years ago
TypeAnalysisTests.roslyn.il #1055: Use more type hints in ExpressionBuilder. 7 years ago
UnsafeCode.cs Prefer '#if CS60' over '#if !LEGACY_CSC' 7 years ago
UnsafeCode.il Fix #990: Invalid object cast for virtual call through pointer 8 years ago
UnsafeCode.opt.il Fix #990: Invalid object cast for virtual call through pointer 8 years ago
UnsafeCode.opt.roslyn.il Fix #990: Invalid object cast for virtual call through pointer 8 years ago
UnsafeCode.roslyn.il Fix #990: Invalid object cast for virtual call through pointer 8 years ago
Using.cs Use mcs for correctness tests. 7 years ago
Using.il Add support for using on nullables. 8 years ago
Using.opt.il Add support for using on nullables. 8 years ago
Using.opt.roslyn.il Add support for using on nullables. 8 years ago
Using.roslyn.il Add support for using on nullables. 8 years ago
VariableNaming.cs Fix #989: Local variable naming conflict 8 years ago
VariableNaming.il Fix #989: Local variable naming conflict 8 years ago
VariableNaming.opt.il Fix #989: Local variable naming conflict 8 years ago
VariableNaming.opt.roslyn.il Fix #989: Local variable naming conflict 8 years ago
VariableNaming.roslyn.il Fix #989: Local variable naming conflict 8 years ago
VariableNamingWithoutSymbols.cs Fix #989: Local variable naming conflict 8 years ago
VariableNamingWithoutSymbols.il Fix #989: Local variable naming conflict 8 years ago
VariableNamingWithoutSymbols.opt.il Fix #989: Local variable naming conflict 8 years ago
VariableNamingWithoutSymbols.opt.roslyn.il Fix #989: Local variable naming conflict 8 years ago
VariableNamingWithoutSymbols.roslyn.il Fix #989: Local variable naming conflict 8 years ago
WellKnownConstants.cs Fix #1084: Decompiling constants of the target type 7 years ago
WellKnownConstants.il Fix #1084: Decompiling constants of the target type 7 years ago
WellKnownConstants.opt.il Fix #1084: Decompiling constants of the target type 7 years ago
WellKnownConstants.opt.roslyn.il Fix #1084: Decompiling constants of the target type 7 years ago
WellKnownConstants.roslyn.il Fix #1084: Decompiling constants of the target type 7 years ago

Readme.txt

The files in this folder are prettiness tests for the decompiler.

The NUnit class running these tests is ../PrettyTestRunner.cs.
It uses pre-defined IL files in order to avoid test failures in cause of compiler changes.
We test different C# compiler versions as well (in future).

Each test consists of a C# file for comparing the resulting code and a source IL file used for assembling/decompiling.

We:
* assemble a test case (call the result "executable 1")
* decompile "executable 1" to C# ("decompiled.cs")
* compare "decompiled.cs" to "source.cs"

The tests pass if the code looks exactly the same as the input code, ignoring comments, empty lines and preprocessor directives.

Note: If you delete an .il file, it will be re-created on the next test run.
This can be helpful when modifying the test case; but it also might have unexpected results when your C# compiler differs
from the compiler previously used to create the .il file.