Siegfried Pammer
b1352aa569
Fix #1743 : Add pattern for struct constructor initializers.
6 years ago
Daniel Grunwald
de33e79384
Add tests for 'async IAsyncEnumerable'.
...
Remove [AsyncIteratorStateMachine] attribute and left-over ldc.i4 instructions.
6 years ago
Daniel Grunwald
d65b109fbc
Fix #1689 : Add support for null propagation on array access: `arr?[i]`
6 years ago
Daniel Grunwald
80cb24d180
Fix #1709 : NullPropagationTransform.IsGetter on generic types
6 years ago
Siegfried Pammer
d45311f65e
Enable tests for await using and DIM.
6 years ago
Daniel Grunwald
5911b13497
Fix modifiers on default interface methods.
6 years ago
Daniel Grunwald
605b32558a
Extend InterfaceTests
6 years ago
Daniel Grunwald
8f90f3834d
Implement support for C# 8 readonly members.
6 years ago
Siegfried Pammer
7c8458dfa3
Refactor TransformDisplayClassUsage
6 years ago
Siegfried Pammer
dc1e72a3d0
Fix #1151 : Add ref readonly test case.
6 years ago
Daniel Grunwald
4b90e43187
Avoid making explicit ToString() implicit when doing so changes the semantics for mutable value types.
6 years ago
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.
7 years ago
Daniel Grunwald
ab993fc6c6
Fix invalid code generated for impossible casts.
7 years ago
Daniel Grunwald
57b725df79
Fix #1655 : Incorrect pointer cast when calling method on integer constant
7 years ago
Siegfried Pammer
05454bd741
Fix SwitchOnStringTransform.SimplifyCascadingIfStatements: do not remove statements unrelated to switch pattern.
7 years ago
Siegfried Pammer
4db22c87e1
Implement detection of custom task implementations + tests.
7 years ago
Siegfried Pammer
bbb40ecb32
Fix #1602 : Recognize Roslyn empty string case block.
7 years ago
Siegfried Pammer
def681ccdf
Fix #1621 : Add AllowUnreachableCases in switch analysis.
7 years ago
Daniel Grunwald
f1021cb300
Fix #1643 : Handle unbox.any in TransformCatchVariable.
7 years ago
Siegfried Pammer
44c044aa33
Fix #1635 : DynamicInvokeConstructorInstruction Did report the wrong StackType for value types and unknown types.
7 years ago
Daniel Grunwald
cdc7a3641f
Fix references to nested types in generic classes.
7 years ago
Daniel Grunwald
7afa86d90c
Add support for "where T : notnull" constraint.
7 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.
7 years ago
Siegfried Pammer
f49cc11c76
Fix #1627 : Allow constants as targets of dynamic calls.
7 years ago
Siegfried Pammer
fa7c1f574a
Do not convert simple LINQ method calls to LINQ expressions. Closes #1501 .
7 years ago
Siegfried Pammer
0ca5ace524
#1349 : Fix assertions triggered by incorrect local function decompilation.
7 years ago
Daniel Grunwald
3f996ff2c0
Fix #1604 : async methods that had no 'await' but were capturing 'this' were not decompiled correctly
7 years ago
Siegfried Pammer
ec18094c65
Implement transformation of delegate construction with ldvirtftn.
7 years ago
Siegfried Pammer
ce04964206
Reformat ThrowExpressions tests.
7 years ago
Daniel Grunwald
df13f0ce01
Fix #1605 : Inline ref locals more aggressively; this is necessary for VB compound assignments.
7 years ago
Daniel Grunwald
0e0179edff
Improve NullPropagation (?.) when fields of value-type are involved.
7 years ago
Daniel Grunwald
7f8689c464
Allow inlining of compiler-generated value-type-temporaries when field accesses are involved.
7 years ago
Siegfried Pammer
4a0ca21bbf
Add (failing) test case for throw expressions.
7 years ago
Daniel Grunwald
18ee984ade
Add support for "definitely assigned if true/false" to data flow analysis.
7 years ago
Siegfried Pammer
14c76d1ba6
Fix failing initializer tests.
7 years ago
Siegfried Pammer
c51aea3601
Fix decompilation of yield return in local functions.
7 years ago
Siegfried Pammer
911a92f3f9
Basic test for ref reassignment.
7 years ago
Daniel Grunwald
d99f6c81a5
Fix #1595 : preserve C# type for field and tuple element access
7 years ago
Siegfried Pammer
36afa0857d
Add tests for ref, out and in parameters.
7 years ago
Siegfried Pammer
e9a020062d
Add more RefLocalsAndReturns pretty tests.
7 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.
7 years ago
Siegfried Pammer
3d60c7bd70
Fix #1590 : Cast from override method to Delegate is not properly simplified
7 years ago
Daniel Grunwald
b75c252193
Upgrade C# 8.0 nullability support for Roslyn 3.2.0-beta4.
7 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.
7 years ago
Daniel Grunwald
c56714c607
Fix assertion with async lambdas; fix async local functions.
7 years ago
Daniel Grunwald
856cedc95e
#1456 : add test case; add additional checks to ensure we only transform normal locals into using/foreach-locals
7 years ago