.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 b9f50901a4 Fix #3367: Add extra validation to TransformDecimalCtorToConstant to prevent crashes with obfuscated assemblies. 7 months ago
..
.gitignore
AnonymousTypes.cs
AssemblyCustomAttributes.cs
Async.cs Rewrite AssignVariableNames algorithm to use variable usages instead of the list of variables. 1 year ago
AsyncForeach.cs
AsyncMain.cs
AsyncStreams.cs
AsyncUsing.cs
AutoProperties.cs Fix #3010: Remove compiler-generated attributes for required members with custom ctors. 2 years ago
CS9_ExtensionGetEnumerator.cs Add additional tests for .NET 4.0 3 years ago
CS72_PrivateProtected.cs
CS73_StackAllocInitializers.cs Âdd a test case for stackalloc in nested context. 4 years ago
CheckedUnchecked.cs
CompoundAssignmentTest.cs Fix #2166: Unnecessary uint casts/conversions for certain bitwise operations 10 months ago
ConstantsTests.cs Fix #3367: Add extra validation to TransformDecimalCtorToConstant to prevent crashes with obfuscated assemblies. 7 months ago
ConstructorInitializers.cs Fix #3310: Filter out copy-constructor only if it's an actual record type. 10 months ago
CovariantReturns.cs
CustomAttributeConflicts.cs
CustomAttributeSamples.cs Fix #2448: Decompiler shows some enum values as hexdecimal instead of decimal 4 years ago
CustomAttributes.cs Add test case for generic attributes. 2 years ago
CustomAttributes2.cs Fix #2448: Decompiler shows some enum values as hexdecimal instead of decimal 4 years ago
CustomShortCircuitOperators.cs
CustomTaskType.cs
DeconstructionTests.cs Add additional tests for .NET 4.0 3 years ago
DelegateConstruction.cs Rewrite AssignVariableNames algorithm to use variable usages instead of the list of variables. 1 year ago
Discards.cs
DynamicTests.cs Transform RequiresLocationAttribute to 'ref readonly' on function pointers. 1 year ago
EnumTests.cs Fix #2646: Missing values for enums with skipped or duplicate items 3 years ago
ExceptionHandling.cs Fix nullable and other warnings. 3 years ago
ExpressionTrees.cs Fix #3014: Missing type information in lambda expressions. 2 years ago
FileScopedNamespaces.cs
FixProxyCalls.cs Fix #3014: Missing type information in lambda expressions. 2 years ago
FunctionPointers.cs Transform RequiresLocationAttribute to 'ref readonly' on function pointers. 1 year ago
Generics.cs
HelloWorld.cs
IndexRangeTest.cs
InitializerTests.cs Fix #3091: extension methods named "Add" were skipping some checks in AccessPathElement.IsMethodApplicable. 2 years ago
InlineAssignmentTest.cs
InterfaceTests.cs Output attributes on lambda expressions 3 years ago
Issue1080.cs
LiftedOperators.cs
LocalFunctions.cs Rewrite AssignVariableNames algorithm to use variable usages instead of the list of variables. 1 year ago
Lock.cs
Loops.cs
MemberTests.cs
MetadataAttributes.cs Add MethodCodeType argument to MethodImplAttribute. 3 years ago
MultidimensionalArray.cs
NamedArguments.cs
NativeInts.cs Merge pull request #2873 from icsharpcode/net-7.0 2 years ago
NullPropagation.cs Fix #3181: missing type information on NullReferenceExpression used with nullable value types. 7 months ago
NullableRefTypes.cs Add test case for explicit interface implementation involving nullable types 2 years ago
Operators.cs Add support for calling `operator checked`. 2 years ago
OptionalArguments.cs Add test case for C# 12 optional parameters in lambdas. 1 year ago
OutVariables.cs Fix #2806: Do not use implicitly typed out variables, if argument and parameter types do not match exactly. 3 years ago
PInvoke.cs Fix interaction of C# 11 nint==IntPtr with overload resolution. 2 years ago
PatternMatching.cs Add test case for empty string pattern 2 years ago
PropertiesAndEvents.cs
QualifierTests.cs
QueryExpressions.cs Remove incomplete/wrong support for null-forgiving operator. 3 years ago
Readme.txt
Records.cs Fix #3010: Remove compiler-generated attributes for required members with custom ctors. 2 years ago
ReduceNesting.cs Adjust test name 2 years ago
RefFields.cs Add support for ScopedRefAttribute 2 years ago
RefLocalsAndReturns.cs Transform RequiresLocationAttribute to 'ref readonly' on function pointers. 1 year ago
ShortCircuit.cs
StaticAbstractInterfaceMembers.cs Implement support for explicit interface implementation of operators and operator uses. 2 years ago
StringInterpolation.cs Support concatenation involving arguments of type ReadOnlySpan<char>. 1 year ago
Structs.cs Add support for C# 11 required members. 3 years ago
Switch.cs Fix switch-on-string transform for optimized Roslyn. 7 months ago
SwitchExpressions.cs
ThrowExpressions.cs
TupleTests.cs Fix #3014: Missing type information in lambda expressions. 2 years ago
TypeAnalysisTests.cs Fix #2166: Unnecessary uint casts/conversions for certain bitwise operations 10 months ago
TypeMemberTests.cs Fix #3319: KeyDownEvent field reference was replaced with KeyDown event reference. 9 months ago
UnsafeCode.cs AssignVariableNames: Handle fixed statement special cases 1 year ago
UserDefinedConversions.cs
Using.cs
UsingVariables.cs Add additional tests for .NET 4.0 3 years ago
ValueTypes.cs Support ILInlining for in parameters 1 year ago
VariableNaming.cs Fix #3278: Missing variable declaration in nested for-loop after many other loops 11 months ago
VariableNamingWithoutSymbols.cs Rewrite AssignVariableNames algorithm to use variable usages instead of the list of variables. 1 year ago
WellKnownConstants.cs Add additional tests for .NET 4.0 3 years ago
YieldReturn.cs Revert "Add support for C# 11 parameter null checks" 1 year ago

Readme.txt

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

The NUnit class running these tests is ../PrettyTestRunner.cs.

Each test case is a C# file.
The test runner will:
1. Compile the file into an .exe/.dll
2. Decompile the .exe/.dll
3. Compare the resulting code with the original input code.

The tests pass if the code looks exactly the same as the input code, ignoring comments, empty lines and preprocessor directives.
It also ignores disabled preprocessors sections (e.g. "#if ROSLYN") when the test runs with a compiler that does not set this symbol.
See Tester.GetPreprocessorSymbols() for the available symbols.