.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.
 
 
 
 
Daniel Grunwald b50d68c0b0
Merge pull request #3413 from ds5678/use-type-hint-in-pointer-arithmetic
1 month ago
..
.gitignore
AnonymousTypes.cs
AssemblyCustomAttributes.cs
Async.cs Rewrite AssignVariableNames algorithm to use variable usages instead of the list of variables. 10 months ago
AsyncForeach.cs
AsyncMain.cs
AsyncStreams.cs
AsyncUsing.cs
AutoProperties.cs
CS9_ExtensionGetEnumerator.cs
CS72_PrivateProtected.cs
CS73_StackAllocInitializers.cs Use type hint in pointer arithmetic when appropriate 1 month ago
CheckedUnchecked.cs
Comparisons.cs Fix #3322: Add missing checks for equality comparison 3 months ago
CompoundAssignmentTest.cs #1572: Do not generate variable names that match C# keywords. 2 months ago
ConstantsTests.cs Fix #3367: Add extra validation to TransformDecimalCtorToConstant to prevent crashes with obfuscated assemblies. 4 months ago
ConstructorInitializers.cs Fix #3310: Filter out copy-constructor only if it's an actual record type. 7 months ago
CovariantReturns.cs
CustomAttributeConflicts.cs
CustomAttributeSamples.cs
CustomAttributes.cs
CustomAttributes2.cs
CustomShortCircuitOperators.cs
CustomTaskType.cs
DeconstructionTests.cs
DelegateConstruction.cs Fix #3353: Normal method is decompiled as lambda expression. 2 months ago
Discards.cs
DynamicTests.cs Transform RequiresLocationAttribute to 'ref readonly' on function pointers. 10 months ago
EnumTests.cs Addressed feedback 2 months ago
ExceptionHandling.cs Sightly improve variable naming of known types such as EventArgs and Exceptions 2 months 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. 10 months ago
Generics.cs Add transform to remove unconstrained generic reference type check. 1 month ago
HelloWorld.cs
IndexRangeTest.cs
InitializerTests.cs Allow explicit null termination character 3 months ago
InlineAssignmentTest.cs
InterfaceTests.cs
Issue1080.cs
Issue3406.cs Fix #3406: Wrong decompilation of record struct without primary constructor. 2 months ago
Issue3439.cs Fix #3439: Regressed decompilation of variables in lambda scope 2 months ago
Issue3442.cs Don't include generic constraints in generated explicit overrides 2 months ago
LiftedOperators.cs
LocalFunctions.cs Fix #3439: Regressed decompilation of variables in lambda scope 2 months ago
Lock.cs
Loops.cs
MemberTests.cs
MetadataAttributes.cs
MultidimensionalArray.cs
NamedArguments.cs
NativeInts.cs
NullPropagation.cs Fix #3181: missing type information on NullReferenceExpression used with nullable value types. 4 months ago
NullableRefTypes.cs Add test case for explicit interface implementation involving nullable types 2 years ago
Operators.cs
OptionalArguments.cs Fix #3384: add special case for null-literal conversions in optional argument handling. 3 months ago
OutVariables.cs
PInvoke.cs
PatternMatching.cs Add test case for empty string pattern 2 years ago
PointerArithmetic.cs Add another int-guid pair test 1 month ago
PropertiesAndEvents.cs
QualifierTests.cs
QueryExpressions.cs
Readme.txt
Records.cs Add non-embedded attributes to all tests that use older framework versions. 3 months ago
ReduceNesting.cs
RefFields.cs
RefLocalsAndReturns.cs #1572: Do not generate variable names that match C# keywords. 2 months 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>. 10 months ago
Structs.cs Add non-embedded attributes to all tests that use older framework versions. 3 months ago
Switch.cs Fix switch-on-string transform for optimized Roslyn. 4 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 7 months ago
TypeMemberTests.cs Fix #3319: KeyDownEvent field reference was replaced with KeyDown event reference. 6 months ago
UnsafeCode.cs Use type hint in pointer arithmetic when appropriate 1 month ago
UserDefinedConversions.cs
Using.cs Fix #3385: Allow address uses of structs in using transform, if the reference is passed to an in parameter. 3 months ago
UsingVariables.cs
ValueTypes.cs Support ILInlining for in parameters 10 months ago
VariableNaming.cs Fix #3278: Missing variable declaration in nested for-loop after many other loops 8 months ago
VariableNamingWithoutSymbols.cs Rewrite AssignVariableNames algorithm to use variable usages instead of the list of variables. 10 months ago
WellKnownConstants.cs
YieldReturn.cs Revert "Add support for C# 11 parameter null checks" 10 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.