Siegfried Pammer
0c1134f5ed
Fix #1356 : ExpressionTrees: ref parameter usage not transformed correctly.
7 years ago
Siegfried Pammer
590558883e
Fix small regression in initializer tests.
7 years ago
Siegfried Pammer
cb5960b8e0
Fix #1355 : System.ArgumentException: An item with the same key has already been added in Decompiler.IL.Transforms.TransformExpressionTrees.ConvertLambda
7 years ago
Siegfried Pammer
875af13934
Fix #750 : Missing recognizer for ?? when rhs is an assignment expression
7 years ago
Siegfried Pammer
77c1dbab8a
Fix #1345 : Do not construct object initializer, if property or field in access path is not writable.
7 years ago
Siegfried Pammer
667e04462a
Fix #1325 : Do not perform inline assignment transform on setter calls, that belong to parameterized properties.
7 years ago
Siegfried Pammer
091dc25a82
Fix #1340 : Update local function check to match latest version of Roslyn.
7 years ago
Siegfried Pammer
1854a33749
Fix #1340 : infinite recursion in DelegateConstruction due to recursive local function being mistreated as delegate construction.
7 years ago
Siegfried Pammer
b9f179465d
Fix part 1 of #1292 : switch on string inside try-block not recognized.
7 years ago
Siegfried Pammer
112719efaf
Extend safety-checks in TransformSpanTCtorContainingStackAlloc.
7 years ago
Siegfried Pammer
0dac55d584
Add transformation for stackalloc to Span<T>.
7 years ago
Daniel Grunwald
4a3185c823
#907 : Add tests
7 years ago
Daniel Grunwald
0a9df3d373
Fix #1252 : Incorrect comparison type for lifted comparisons in expression trees.
7 years ago
Daniel Grunwald
e041454987
Add pretty tests for "yield return" and fix some minor bugs:
...
* remove redundant casts on yield-return-expression
* keep variable name from metadata for foreach loops
* fix 'yield break;' in nested try-finally sometimes causing a decompiler error
7 years ago
Wenxuan Zhao
3e937cf7cb
Fix delegate in yield return issue for assembly compiled with Mono
7 years ago
Daniel Grunwald
ef866040b4
Update to SRM 1.6.0 and Roslyn 2.9. Adjust decompiler to new code pattern used for lifted nullable comparisons.
7 years ago
Daniel Grunwald
12e74daf48
Handle Comp in InferType().
7 years ago
Chicken-Bones
ab9397d099
Add ReduceNestingTransform
7 years ago
Chicken-Bones
e9b766d708
Improve persistence of IL offsets through various transforms.
7 years ago
Siegfried Pammer
6719dacabd
Fix #1279 : Event fields in object initializers
7 years ago
Siegfried Pammer
65cf13ce27
Fix #1270 : Bad decompilation of mcs switch-on-string
8 years ago
Chicken-Bones
52a279f861
Restore HighLevelLoopTransform pattern match for loop contents within if body
8 years ago
Chicken-Bones
7017d998d0
Improve switch decompilation in loops via early detection of continue blocks.
8 years ago
Chicken-Bones
62b2ad4f8d
Improve UseCSharpSwitch to reduce over-aggressive use of switch producing poor quality code.
8 years ago
Siegfried Pammer
cf1d05042f
Add detection of local functions, so we do not hide the methods/display classes.
8 years ago
Siegfried Pammer
1dcae5bff8
Extend HandleCall to NewObj instructions as well.
8 years ago
Siegfried Pammer
b701bed2ff
SplitVariables: analyze address usage in virtual calls as well. Treat them the same as call instructions.
8 years ago
Siegfried Pammer
4fab913bf6
Fix #1249 : Bug in detection of multiple nested expression trees in query expressions.
8 years ago
Siegfried Pammer
08af55aa57
Avoid ITypeDefinition.FullName. Use Name and Namespace separately to avoid string allocation. Reorder checks to improve performance on pattern mismatch.
8 years ago
Siegfried Pammer
ebbe25fba7
Apply suggested refactorings on TransformArrayInitializers.cs
8 years ago
Siegfried Pammer
772b529d16
Add support for stackalloc initializer pattern that uses initblk.
8 years ago
Siegfried Pammer
057ab82534
Add basic stackalloc initializer transforms.
8 years ago
Siegfried Pammer
2a537fcecb
Reorder code in TransformArrayInitializers.cs
8 years ago
Andrew Au
9837933e9d
Fix issue #1224
8 years ago
Daniel Grunwald
2f54eee5db
#1195 : Fix comparison of object reference with ldc.i4 0.
8 years ago
Daniel Grunwald
ba0a3af3c4
#1195 : Fix several issues decompiling SharpSvn.dll (C++/CLI)
8 years ago
Daniel Grunwald
066da1ea16
Fix #1200 : assertion in TransformInlineAssignmentLocal when reconstructed stack slot (after async-await transform) has small integer type.
...
The assertion was unnecessary, because we already check 'IsImplicitTruncation(inst.Value, inst.Variable.Type)'.
8 years ago
Daniel Grunwald
dd5845e83d
Support short-circuiting operators with dynamic. (e.g. "if (x.A && x.B)" where "x" is dynamic)
8 years ago
Daniel Grunwald
9479e8af13
Support overloaded operator &&/||.
8 years ago
Chicken-Bones
f539bee362
Move binary->logical AND to ExpressionTransforms and use SemanticHelper.IsPure
8 years ago
Chicken-Bones
fe6a85fa68
Reverse Roslyn optimisation to favour && over & on boolean operands.
8 years ago
Daniel Grunwald
90d866d78a
Fix #1193 : Performance issues with deeply nested block structures
8 years ago
Daniel Grunwald
b396d203bd
Merge IDecompilerTypeSystem with ICompilation.
8 years ago
Daniel Grunwald
1f3916d554
Use the resolve methods in MetadataModule, and remove the wrappers in DecompilerTypeSystem.
8 years ago
Daniel Grunwald
c54632e7cb
Fix some type system bugs.
8 years ago
Daniel Grunwald
107fe5eb1c
Eliminate SpecializingDecompilerTypeSystem and use GenericContext instead.
8 years ago
Daniel Grunwald
4580eab7ab
Disable ref inline assignments.
...
This increases the chances that we'll avoid CS8174: A declaration of a by-reference variable must have an initializer.
8 years ago
Daniel Grunwald
7ee686cb67
Allow splitting a variable even if it has its address taken and stored in a ref-local.
...
The currently implementation is somewhat minimal and only works in a very limited set of circumstances:
* the ref local is single-assignment
* the ref local is initialized directly with 'ldloca target; stloc ref_local',
not a derived pointer (e.g. 'ldloca target; ldflda F; stloc ref_local').
* all uses of the ref_local are immediately consuming the address
This improves variable splitting cases where the compiler re-uses a stack slot containing a reference,
e.g. in some cases of '?.' on Nullable<T>.
8 years ago
Daniel Grunwald
3b46776c5e
Rename IAssembly -> IModule.
...
While support for multi-module assemblies isn't fully working yet; it is clear at this point that we want
to treat each module in a multi-module assembly separately for the purposes of the type system.
8 years ago
Daniel Grunwald
33ef82f75c
Fix #1082 : Add support for compound assignment with string.Concat().
...
Currently only supports the binary overloads of string.Concat().
8 years ago