Daniel Grunwald
b5eecb8afc
Don't remove redundant ToString() calls in expression trees.
6 years ago
Daniel Grunwald
7a5d8af57d
#1691 : Further improvements for decompiling the new VS 2019.3 string concatenation IL pattern
6 years ago
Daniel Grunwald
0d3a3bee82
Fix #1703 : Support async methods that never return normally.
...
Closes #1678 .
6 years ago
Siegfried Pammer
d2f7258347
Fix #1681 : Use discard assignment, if possible.
6 years ago
Siegfried Pammer
f5185d5697
Fix #1660 : Generic proxy calls should use the callee's type parameter substitution, not the caller's.
6 years ago
Daniel Grunwald
ab993fc6c6
Fix invalid code generated for impossible casts.
6 years ago
Daniel Grunwald
57b725df79
Fix #1655 : Incorrect pointer cast when calling method on integer constant
6 years ago
Siegfried Pammer
05454bd741
Fix SwitchOnStringTransform.SimplifyCascadingIfStatements: do not remove statements unrelated to switch pattern.
6 years ago
Siegfried Pammer
4db22c87e1
Implement detection of custom task implementations + tests.
6 years ago
Siegfried Pammer
bbb40ecb32
Fix #1602 : Recognize Roslyn empty string case block.
6 years ago
Siegfried Pammer
def681ccdf
Fix #1621 : Add AllowUnreachableCases in switch analysis.
6 years ago
Daniel Grunwald
f1021cb300
Fix #1643 : Handle unbox.any in TransformCatchVariable.
6 years ago
Siegfried Pammer
44c044aa33
Fix #1635 : DynamicInvokeConstructorInstruction Did report the wrong StackType for value types and unknown types.
6 years ago
Daniel Grunwald
cdc7a3641f
Fix references to nested types in generic classes.
6 years ago
Daniel Grunwald
7afa86d90c
Add support for "where T : notnull" constraint.
6 years ago
Siegfried Pammer
13fa499c35
Fix #1630 : Do not convert while to for statement, if any iterator variables are to be declared in the loop body. This causes problems with ref-typed variables.
6 years ago
Siegfried Pammer
f49cc11c76
Fix #1627 : Allow constants as targets of dynamic calls.
6 years ago
Siegfried Pammer
fa7c1f574a
Do not convert simple LINQ method calls to LINQ expressions. Closes #1501 .
6 years ago
Siegfried Pammer
0ca5ace524
#1349 : Fix assertions triggered by incorrect local function decompilation.
6 years ago
Daniel Grunwald
3f996ff2c0
Fix #1604 : async methods that had no 'await' but were capturing 'this' were not decompiled correctly
6 years ago
Siegfried Pammer
ec18094c65
Implement transformation of delegate construction with ldvirtftn.
6 years ago
Siegfried Pammer
ce04964206
Reformat ThrowExpressions tests.
6 years ago
Daniel Grunwald
df13f0ce01
Fix #1605 : Inline ref locals more aggressively; this is necessary for VB compound assignments.
6 years ago
Daniel Grunwald
0e0179edff
Improve NullPropagation (?.) when fields of value-type are involved.
6 years ago
Daniel Grunwald
7f8689c464
Allow inlining of compiler-generated value-type-temporaries when field accesses are involved.
6 years ago
Siegfried Pammer
4a0ca21bbf
Add (failing) test case for throw expressions.
6 years ago
Daniel Grunwald
18ee984ade
Add support for "definitely assigned if true/false" to data flow analysis.
6 years ago
Siegfried Pammer
14c76d1ba6
Fix failing initializer tests.
6 years ago
Siegfried Pammer
c51aea3601
Fix decompilation of yield return in local functions.
6 years ago
Siegfried Pammer
911a92f3f9
Basic test for ref reassignment.
6 years ago
Daniel Grunwald
d99f6c81a5
Fix #1595 : preserve C# type for field and tuple element access
6 years ago
Siegfried Pammer
36afa0857d
Add tests for ref, out and in parameters.
6 years ago
Siegfried Pammer
e9a020062d
Add more RefLocalsAndReturns pretty tests.
6 years ago
Daniel Grunwald
8cd8a90c22
Fix #1563 : `Unexpected return in MoveNext()` when mixed `using` and more than one `yield break`
...
Roslyn re-uses the same "this.Finally(); return v;" block for both "yield break;" instructions, so the yield break pattern needs to support multiple stores to the helper variable.
6 years ago
Siegfried Pammer
3d60c7bd70
Fix #1590 : Cast from override method to Delegate is not properly simplified
6 years ago
Daniel Grunwald
b75c252193
Upgrade C# 8.0 nullability support for Roslyn 3.2.0-beta4.
6 years ago
Daniel Grunwald
539e3a906d
Fix #1552 : user-defined and decimal increments
...
For user-defined increments, there were problems with Roslyn was optimizing out one of the stores.
The new transform FixRemainingIncrements now takes increments/decrements that were not detected by TransformAssignment and introduces a temporary variable that can be incremented.
This sometimes requires un-inlining via the new ILInstruction.Extract() operation.
Extract() is not supported in all possible contexts, so it is possible but unlikely that some op_Increment calls remain.
For decimals, the situation is different: legacy csc actually was optimizing "d + 1m" to "op_Increment(d)", so we can get rid of any left-over increments by undoing this optimization. This now happens in ReplaceMethodCallsWithOperators.
6 years ago
Daniel Grunwald
c56714c607
Fix assertion with async lambdas; fix async local functions.
6 years ago
Daniel Grunwald
856cedc95e
#1456 : add test case; add additional checks to ensure we only transform normal locals into using/foreach-locals
6 years ago
Siegfried Pammer
537df7bab3
Add option: 'ref' extension methods
6 years ago
Siegfried Pammer
a109b77858
Refactor LocalFunctionDecompiler to allow mutually recursive local functions to be decompiled correctly.
6 years ago
Siegfried Pammer
763ea38644
Clean up CallBuilder.HandleDelegateConstruction
6 years ago
Siegfried Pammer
37e14f43e3
Refactor/Clean up local functions representation in type system.
6 years ago
Daniel Grunwald
33c7425fa2
Fix several bugs with compound assignments on indexers.
...
Closes #1580 .
6 years ago
Siegfried Pammer
bb066dbd04
Additional test (deactivated)
6 years ago
Siegfried Pammer
01e42b772c
Fix local functions inside lambdas.
6 years ago
Siegfried Pammer
b83cb41f2e
Add pretty tests for local functions.
6 years ago
Siegfried Pammer
89a50e64fc
Extension method syntax on lambda expressions/delegates is not allowed.
6 years ago
Daniel Grunwald
e6489d543e
Fix #1574 : When re-introducing an explicit cast for an implicit user-defined conversion; ensure we use a direct cast and don't go through the code path for builtin conversions.
6 years ago
Daniel Grunwald
3314f3f37a
Fix #1571 : Expression transforms not running for values of inline assignments.
6 years ago