Siegfried Pammer
6e49efd5aa
Extend ILInlining to work with StringToInt instructions inside Switch instruction.
6 years ago
Siegfried Pammer
9c62f11e51
Add new switch(string) pattern for Roslyn.
6 years ago
Siegfried Pammer
80bc89f606
Fix SwitchOnStringTransform.SimplifyCascadingIfStatements to handle newer Roslyn code-gen correctly.
6 years ago
Siegfried Pammer
859eb623b8
Fix #1439 : Add DecompilerSettings.UseLambdaSyntax
6 years ago
Siegfried Pammer
d42cf99a8c
Fix dynamic transforms because https://github.com/dotnet/roslyn/issues/27800 was fixed.
6 years ago
Daniel Grunwald
72508b5777
Add test for C# 8 nullable reference types; and fix some bugs.
6 years ago
Daniel Grunwald
3fac3c07a2
Upgrade Roslyn for tests to 3.0.0-beta3.
...
Remove the committed .il files: these were originally intended to prevent test failures due to differences in the C# compiler on the system.
But legacy csc stopped changing long ago; and roslyn is tested via NuGet package, so everyone is using the same version.
Interestingly enough, avoiding the roundtrip through ildasm/ilasm caused some test failures due to changes in the order of top-level types.
So I've started sorting the types by name to ensure consistency in the tests. This required adjusting some existing tests.
6 years ago
Daniel Grunwald
113acd48c1
Improve decompiler behavior is System.ValueTuple exists in multiple referenced assemblies.
...
This can happen if an application is compiled for .NET 4.6.2 and references
System.ValueTuple.dll; but ILSpy loads the latest mscorlib (e.g. .NET 4.7)
which also contains struct System.ValueTuple.
6 years ago
Siegfried Pammer
f05c1bb466
Fix build break; only escape _ if it is a type name. Add basic Discards tests.
6 years ago
Daniel Grunwald
0238e645db
Fix [DecimalConstant] parameters
6 years ago
Daniel Grunwald
d677ee6254
Escape identifier "_" to avoid ambiguities with discard patterns.
6 years ago
Daniel Grunwald
2f35374d7d
Support "where T : unmanaged" constraints.
6 years ago
Siegfried Pammer
94cd891609
Add support for ReadOnlySpan<T> initialization pattern.
6 years ago
Siegfried Pammer
27efe1b61c
Fix #1429 : Optimize ExpressionBuilder.TranslateArrayInitializer by applying optimizations suggested in #1202 .
6 years ago
Siegfried Pammer
0758c7ea32
Fix #1424 : Complex from/where contains compiler generated names
6 years ago
Siegfried Pammer
5962d4675f
Add IL tests for basic isinst patterns. Undo change mentioned in 54ff546221 (commitcomment-32359757)
6 years ago
Siegfried Pammer
545be6d133
Fix CSharpDecompiler.SetNewModifier: follow rules stated in the language specification.
6 years ago
Siegfried Pammer
d9b7df637b
Apply expression-body transform to indexers as well.
6 years ago
Siegfried Pammer
d17fbd3d59
Add pattern matching support in ParameterDeclaration.
6 years ago
Siegfried Pammer
78cf5f0ec0
Add support for expression bodies to IndexerDeclaration.
6 years ago
Siegfried Pammer
9cbb58d4f7
Add 'includeModifiers' option to ParameterListComparer.
6 years ago
Siegfried Pammer
54ff546221
Fix deactivated Generics pretty tests: remove redundant boxing conversion from is-expressions.
6 years ago
Siegfried Pammer
6f3230af48
Add ununsed CustomAttributes test.
...
Fix CalculatedGetterOnlyPropertyPattern for properties with attributes.
6 years ago
Siegfried Pammer
00d6c6175a
#1049 : Check decompiler settings in TransformAssignment.HandleCompoundAssign as well.
6 years ago
Siegfried Pammer
087cb2489d
Fix #1049 : Unimplemented decompiler settings
6 years ago
Siegfried Pammer
29527b804e
Fix #1392 : LoopDetection should take switch block containers into account in IncludeNestedContainers.
6 years ago
Siegfried Pammer
f9b54187a9
#1049 : Remove AlwaysGenerateExceptionVariableForCatchBlocks from DecompilerSettings.
6 years ago
Daniel Grunwald
06cf9c1747
Avoid exceptions on IType->ArrayType or IType->ITypeParameter casts due to NullabilityAnnotatedType decorator.
6 years ago
Siegfried Pammer
bec9559385
Add ShowCFGContextMenuEntry - requires GraphViz dot.exe in PATH.
6 years ago
Daniel Grunwald
bbbfe81c25
Nullability of type parameters "where T : class?"
6 years ago
Siegfried Pammer
ab55086cd7
Use ILRange API in AsyncAwaitDecompiler.
6 years ago
Siegfried Pammer
c1fca21e8a
Make ILRange field private - introduce public API for IL range manipulation.
6 years ago
Daniel Grunwald
d90c195b00
SHA256 instances are not thread-safe
6 years ago
Daniel Grunwald
f1c8142ce2
PDB generator now can emit "method stepping information" for async functions.
6 years ago
Siegfried Pammer
4e290b545a
Merge ILRanges of DelegateConstruction newobj + ldftn into ILFunction.
6 years ago
Siegfried Pammer
b4c376d195
Ignore document checksum and blob length in PdbGenerationTestRunner
6 years ago
Daniel Grunwald
6a47826fe2
Add sequence point on closing brace if there's an implicit void return.
6 years ago
Daniel Grunwald
763683748b
Emit debug info for display class locals, so that the debugger can show the values of captured variables.
6 years ago
Siegfried Pammer
84cf4ea6a1
Cleanup and fix ILRanges in DelegateConstruction.
6 years ago
Daniel Grunwald
9188a682e7
Add some steps to DelegateConstruction
6 years ago
Siegfried Pammer
25c757b7cd
Add first attempt at PdbGenerationTestRunner.
6 years ago
Daniel Grunwald
f6aae1f97d
Fix #1386 : MoveArrayToPointerToPinnedRegionInit: Only consider the pinned variable uses within the PinnedRegion
...
This also makes CleanUpTryFinallyAroundPinnedRegion() redundant as it is no longer necessary to trigger the array-to-pointer transform; so the normal elimination of pinned variable resets is sufficient.
6 years ago
Daniel Grunwald
f9f9d57398
#1386 : Fix fixed-statement detection when fixed statement contains "return" and the method has multiple return statements.
6 years ago
Daniel Grunwald
1ab11ba7ce
DetectPinnedRegions: also add debug step for failed CreatePinnedRegion() calls
6 years ago
Daniel Grunwald
2eafa0c695
Fix #1389 : Translation of "isinst" was incorrect for value types was causing an assertion.
6 years ago
Daniel Grunwald
976565264f
Don't use casts for implicit conversions to bool in conditional contexts.
6 years ago
Daniel Grunwald
bb3b50d1af
Allow recombining of captured variables.
6 years ago
Daniel Grunwald
da5693e605
Fix #1339 : fixed statement not decompiled correctly when pinned variable is reset in finally block
6 years ago
Siegfried Pammer
d9952a7e10
#1388 : Fix ArgumentOutOfRangeException in AsyncAwaitDecompiler.AnalyzeAwaitBlock.
6 years ago
Siegfried Pammer
b7fc830faa
Fix #1406 : Use IEnumerable<T> instead of IList<T> in CSharpDecompiler.Decompile and DecompileAsString.
6 years ago