.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 a24404a2f6 Add pretty tests for C# 10 interpolated string handlers 2 months ago
..
.gitignore Rewrite TransformFieldAndConstructorInitializers from a step-by-step AST-based analysis to an analysis that tracks the whole constructor body. 10 months ago
AnonymousTypes.cs Fix #3475: Emit 'true ? null : new { ... }' for null of anonymous type 2 months ago
AssemblyCustomAttributes.cs dev: Strip BOM mark from text files 1 year ago
Async.cs Add pretty tests for await in expression positions 2 months ago
AsyncForeach.cs Add pretty tests for ConfigureAwait in async iterators and foreach 2 months ago
AsyncMain.cs dev: Strip BOM mark from text files 1 year ago
AsyncStreams.cs Fix #3908: use the async iterator element type for yield 2 months ago
AsyncUsing.cs dev: Strip BOM mark from text files 1 year ago
AutoProperties.cs Add pretty tests for SetsRequiredMembers and required-member inheritance 2 months ago
AutomaticEvents.cs Replace automatic-event backing-field references during translation 2 months ago
CS9_ExtensionGetEnumerator.cs dev: Strip BOM mark from text files 1 year ago
CS72_PrivateProtected.cs dev: Strip BOM mark from text files 1 year ago
CS73_StackAllocInitializers.cs Don't inline a pointer-typed stackalloc into an expression 3 months ago
CachedReadOnlySpanInitialization.cs Fix #3850: recover ReadOnlySpan<T> array literals from the legacy lazy cache 2 months ago
CheckedUnchecked.cs dev: Strip BOM mark from text files 1 year ago
Comparisons.cs dev: Strip BOM mark from text files 1 year ago
CompoundAssignmentTest.cs Add preprocessor directive 1 year ago
ConstantsTests.cs dev: Strip BOM mark from text files 1 year ago
ConstructorInitializers.cs Replace automatic-event backing-field references during translation 2 months ago
CovariantReturns.cs Merge pull request #3546 from petercrabtree/dev/dev-env-clean-no-bom 1 year ago
CustomAttributeConflicts.cs dev: Strip BOM mark from text files 1 year ago
CustomAttributeSamples.cs Fix IDE2000 globally 9 months ago
CustomAttributes.cs Add pretty test for generic attributes with constructed type arguments 2 months ago
CustomAttributes2.cs Fix #2448: Decompiler shows some enum values as hexdecimal instead of decimal 5 years ago
CustomShortCircuitOperators.cs Rewrite TransformFieldAndConstructorInitializers from a step-by-step AST-based analysis to an analysis that tracks the whole constructor body. 10 months ago
CustomTaskType.cs dev: Strip BOM mark from text files 1 year ago
DeconstructionTests.cs dev: Strip BOM mark from text files 1 year ago
DelegateConstruction.cs dev: Strip BOM mark from text files 1 year ago
Discards.cs Remove obsolete tests 12 months ago
DynamicAwait.cs Fix #1388, #1928: decompile await on dynamic expressions 2 months ago
DynamicTests.cs Fix dynamic event-assignment decompilation leaking is-event opcode 2 months ago
EnumTests.cs Beautify enum declarations by referencing previously declared members 2 months ago
ExceptionHandling.cs Add pretty test for exception filters with side effects 2 months ago
ExpandParamsArgumentsDisabled.cs Add ExpandParamsArguments DecompilerSettings 1 year ago
ExpressionTrees.cs Add pretty test for checked arithmetic in expression trees 2 months ago
ExtensionEverything.cs Apply suggestions from Claude code review 6 months ago
FileScopedNamespaces.cs dev: Strip BOM mark from text files 1 year ago
FixProxyCalls.cs dev: Strip BOM mark from text files 1 year ago
FunctionPointers.cs Handle multiple calling conventions at once 10 months ago
Generics.cs Add pretty test for overriding members of a generic base type 2 months ago
GloballyQualifiedTypeInStringInterpolation.cs dev: Strip BOM mark from text files 1 year ago
HelloWorld.cs dev: Strip BOM mark from text files 1 year ago
IndexRangeTest.cs dev: Strip BOM mark from text files 1 year ago
InitializerTests.cs Add regression test for duplicate array-element assignment 2 months ago
InlineArrayTests.cs Fix #3804: reconstruct foreach over an inline array 2 months ago
InlineAssignmentTest.cs dev: Strip BOM mark from text files 1 year ago
InterfaceTests.cs Add pretty tests for protected, static, and generic interface members 2 months ago
InterpolatedStringHandlers.cs Add pretty tests for C# 10 interpolated string handlers 2 months ago
Issue1080.cs dev: Strip BOM mark from text files 1 year ago
Issue3406.cs dev: Strip BOM mark from text files 1 year ago
Issue3439.cs dev: Strip BOM mark from text files 1 year ago
Issue3442.cs dev: Strip BOM mark from text files 1 year ago
Issue3452.cs Fix #3611: Update test cases to reflect original test 9 months ago
Issue3483.cs dev: Strip BOM mark from text files 1 year ago
Issue3541.cs Fix regression in decompiling local functions with default parameters 1 year ago
Issue3571_A.cs Fix lower case type name conflicting with variable name 12 months ago
Issue3571_B.cs Fix lower case type name conflicting with variable name 12 months ago
Issue3571_C.cs Formatting 12 months ago
Issue3576.cs Do not create object initializers for tuples 12 months ago
Issue3584.cs Improve inlining of boxed values 10 months ago
Issue3598.cs Rewrite TransformFieldAndConstructorInitializers from a step-by-step AST-based analysis to an analysis that tracks the whole constructor body. 10 months ago
Issue3610.cs Fix #3611: Update test cases to reflect original test 9 months ago
Issue3611.cs Fix IDE2000 globally 9 months ago
Issue3684.cs Fix #1682, fix #1949, fix #2394 and fix #3684: Added basic algorithm of IsAccessorInterfaceImplementationRuntimeHelper 6 months ago
Issue3684.dep.cs Fix #1682, fix #1949, fix #2394 and fix #3684: Added basic algorithm of IsAccessorInterfaceImplementationRuntimeHelper 6 months ago
Issue3751.cs Fix anonymous-type lambda early-return emitting unresolvable cast (#3752) 3 months ago
Issue3877.cs Add Issue3877 test and handle negative dict capacity 2 months ago
Issue3909.cs Pin disambiguators for constraints on sibling method type parameters 2 months ago
LiftedOperators.cs Add pretty tests for lifted compound assignment and nullable boxing 2 months ago
LocalFunctions.cs Add pretty tests for async local functions 2 months ago
Lock.cs dev: Strip BOM mark from text files 1 year ago
Loops.cs Fix #1603: recognize foreach over enumerators that cannot be disposable 2 months ago
MemberTests.cs dev: Strip BOM mark from text files 1 year ago
MetadataAttributes.cs dev: Strip BOM mark from text files 1 year ago
MultidimensionalArray.cs dev: Strip BOM mark from text files 1 year ago
NamedArguments.cs Fix #3626: Do not emit named arguments for bool constants, if it causes the call to become ambiguous. 10 months ago
NativeInts.cs dev: Strip BOM mark from text files 1 year ago
NullPropagation.cs dev: Strip BOM mark from text files 1 year ago
NullableRefTypes.cs Add pretty tests for nullable postcondition attributes 2 months ago
Operators.cs Add pretty test for compound assignment with checked operators 2 months ago
OptionalArguments.cs dev: Strip BOM mark from text files 1 year ago
OptionalArgumentsDisabled.cs Fix methods with mandatory arguments ignore disabled OptionalArguments setting 1 year ago
OutVariables.cs Add test for out-var reference nested within another argument 2 months ago
PInvoke.cs dev: Strip BOM mark from text files 1 year ago
ParamsCollections.cs Add test for "params scoped Span'. 11 months ago
PatternMatching.cs dev: Strip BOM mark from text files 1 year ago
PointerArithmetic.cs dev: Strip BOM mark from text files 1 year ago
PropertiesAndEvents.cs Fix #3575: Uses of compiler-generated events getting swapped with non-generated events of same type 12 months ago
QualifierTests.cs Remove obsolete tests 12 months ago
QueryExpressions.cs Add pretty test for select-into query continuations 2 months ago
Readme.txt dev: Strip BOM mark from text files 1 year ago
Records.cs Add pretty tests for readonly record structs and custom record members 2 months ago
ReduceNesting.cs dev: Strip BOM mark from text files 1 year ago
RefFields.cs Add pretty tests for UnscopedRef members 2 months ago
RefLocalsAndReturns.cs Address review: keep while-loop instead of headless for for ref locals 2 months ago
RefStructInterfaces.cs Add pretty test for C# 13 ref struct interfaces / allows ref struct 2 months ago
ShortCircuit.cs Fix #1924: don't undo the compiler's &&-to-& optimization 2 months ago
StaticAbstractInterfaceMembers.cs Add pretty tests for static abstract checked and shift operators 2 months ago
StringConcatenation.cs Fix #3895: keep byref-like ToString in string concatenation 2 months ago
StringInterpolation.cs dev: Strip BOM mark from text files 1 year ago
StringInterpolationDefaultHandler.cs Add pretty tests for C# 10 interpolated string handlers 2 months ago
Structs.cs Many thanks to @sonyps5201314 for providing the test cases and a suggested fix, which inspired these changes. 10 months ago
Switch.cs Fix #1924: don't undo the compiler's &&-to-& optimization 2 months ago
SwitchExpressions.cs Fix #3382: Support compiler-generated throw-helper invocations in switch-expression implicit default-case. 3 months ago
ThrowExpressions.cs dev: Strip BOM mark from text files 1 year ago
TupleTests.cs dev: Strip BOM mark from text files 1 year ago
TypeAnalysisTests.cs dev: Strip BOM mark from text files 1 year ago
TypeMemberTests.cs dev: Strip BOM mark from text files 1 year ago
UnsafeCode.cs Fix #3892: preserve unsafe for pointer constructors 2 months ago
UserDefinedConversions.cs dev: Strip BOM mark from text files 1 year ago
Using.cs dev: Strip BOM mark from text files 1 year ago
UsingVariables.cs Add pretty test for pattern-based Dispose of a ref struct 2 months ago
ValueTypes.cs dev: Strip BOM mark from text files 1 year ago
VariableNaming.cs dev: Strip BOM mark from text files 1 year ago
VariableNamingWithoutSymbols.cs dev: Strip BOM mark from text files 1 year ago
Variance.cs Add Variance pretty test fixture 2 months ago
WellKnownConstants.cs dev: Strip BOM mark from text files 1 year ago
YieldReturn.cs Add pretty test for generic iterator methods 2 months 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.