Siegfried Pammer
c0a9afc4ad
Fix #3616 : local variable naming conflict with primary constructor parameters.
3 weeks ago
ds5678
b9d6ba7dff
Remove flags from `box` that indicate memory access and ability to throw
2 months ago
ds5678
ad4a87b9a3
Improve inlining of boxed values
2 months ago
Siegfried Pammer
588c243929
#3593 : ObjectInitializers: allow castclass instructions wrapping the init instruction to support the pattern used for covariant returns on non-supporting platforms such as .NET 4.x.
2 months ago
Siegfried Pammer
126e870a5a
Fix #3577 : Properly infer the switch governing type and preserve conversions
3 months ago
ds5678
dc3ed43dd8
Do not create object initializers for tuples
3 months ago
ds5678
df9cc3dfbe
Null forgiveness for UsingScope
3 months ago
ds5678
c54318173b
Fix lower case type name conflicting with variable name
3 months ago
Siegfried Pammer
0e1478ffce
Fix #3564 : extend TransformDisplayClassUsage.IsPotentialClosure to support sibling DisplayClasses calling each other.
3 months ago
ds5678
1d964bce8e
Fix regression in decompiling local functions with default parameters
4 months ago
Jeremy Pritts
d1dc7b258a
Copy-propagate the stack slot for collection initializers ( #3554 )
...
* Copy-propagate the stack slot for collection initializers
* Use pattern matching
4 months ago
Siegfried Pammer
6aa9bd8e5e
Fix #3549 : Do not crash on encountering nil tokens.
4 months ago
Peter Crabtree
e1e16b64f5
dev: Strip BOM mark from text files
4 months ago
Daniel Grunwald
587a359e8c
Fix #1873 : Clear ILRange in CopyPropagation
...
We are copying an expression from far away, reusing the ILRange would result in incorrect sequence points.
4 months ago
Daniel Grunwald
02d9dc3e85
Fix #3323 : Simplify cleanup in AwaitInFinallyTransform, ensuring that we do not miss any containers.
4 months ago
Daniel Grunwald
c84605a610
Fix #3468 : Try harder to avoid ref locals if `UseRefLocalsForAccurateOrderOfEvaluation` is not enabled.
...
CopyPropagation will replace `ref StructWithStringField reference = ref array[0];` with:
```
var x = array;
var y = 0;
```
and then every use of `reference` is replaced with `x[y]`.
This lets us avoid rough locals while preserving the semantics in every case except that we re-order when a NullReferenceException/IndexOutOfRangeException occurs.
4 months ago
Daniel Grunwald
ec58d57875
#3465 : Fix bugs in `comp.o` handling.
4 months ago
Daniel Grunwald
f826037acc
Protect IsInst against multi-step inlining -- we can only allow `Box` as the top-level argument, not anywhere within the argument tree.
4 months ago
Daniel Grunwald
8ad33f1e13
Fix #3479 : If YieldReturnDecompiler.ConvertBody fails, abort transforming the state machine instead of continuing with invalid code.
4 months ago
Daniel Grunwald
dd4bf7d8a4
Fix #3518 by replacing `FixLoneIsInst` with an inlining restriction.
...
This way we avoid having to extract later, as we will never inline if the `isinst` argument if this could result in it being unrepresentable in C#.
This commit also refactors inlining restrictions to avoid requiring special cases in ILInlining itself.
But when making this change, I discovered that this broke our pattern-matching tests, and that the weird IL with double `isinst` is indeed generated by the C# compiler for `if (genericParam is StringComparison.Ordinal)` style code. So instead we also allow `isinst` with a `box(expr-without-side-effects)` argument to be represented with the `expr is T ? (T)expr : null` emulation.
4 months ago
ds5678
15223daabd
WIP preincrement improvements
5 months ago
Siegfried Pammer
6c00c138eb
Fix #3465 : Translate comp.o(a op b) if op not in (==, !=) into Unsafe.As<object, UIntPtr>(ref a) op Unsafe.As<object, UIntPtr>(ref b)
5 months ago
Siegfried Pammer
9dde97414a
Rename ResolvedUsingScope to UsingScope
5 months ago
Siegfried Pammer
c9e3790adc
Remove UnresolvedUsingScope
5 months ago
Siegfried Pammer
d2d9281072
Move CanTransformToExtensionMethodCall to CSharpResolver
5 months ago
Siegfried Pammer
d0fc0411fb
Update to C# 13 and fix field keyword
5 months ago
Siegfried Pammer
f97e59760b
Fix #3512 : Local function name collides with local variable name
5 months ago
Siegfried Pammer
49368caf1c
Rename option to "UseObjectCreationOfGenericTypeParameter"
6 months ago
Siegfried Pammer
51a26180bb
Fix #3492 : Do not crash, if field used by RuntimeHelpers.InitializeArray is malformed.
6 months ago
Siegfried Pammer
8834c02eb7
Improve naming of delegate-typed variables.
6 months ago
Siegfried Pammer
fecb10f109
Generalize ILInlining special cases for in arguments of ROS<T> ctors.
6 months ago
Siegfried Pammer
2461f520ab
Move LocalFunctionDecompiler.GetStatement to Block.GetContainingStatement
6 months ago
Siegfried Pammer
298c247355
InlineArrayTransform: Add more bounds checking
7 months ago
Siegfried Pammer
47dd905ad0
Make InlineArrayTransform post-order
7 months ago
Siegfried Pammer
79f7a188b0
Add support for C# 12 inline array expressions
7 months ago
Siegfried Pammer
cb790c6d38
Allow variable splitting of compiler-generated temporaries for Span<T>/ROS<T>
7 months ago
Daniel Grunwald
7fc9025500
Fix nullability of Extract return type
8 months ago
Siegfried Pammer
b1a617c827
AssignVariableNames: Fix ArgumentException
9 months ago
Siegfried Pammer
6c72d1c5f0
Add transform to remove unconstrained generic reference type check.
9 months ago
Siegfried Pammer
9f77f8a919
Prevent inlining of call arguments when doing so would change order of evaluation with regards to the implicit ldobj performed by a constrained.callvirt.
9 months ago
Siegfried Pammer
485ca1d69a
Fix #3353 : Normal method is decompiled as lambda expression.
9 months ago
Siegfried Pammer
7d0262d779
Fix #3439 : Regressed decompilation of variables in lambda scope
9 months ago
Siegfried Pammer
349a89c1fa
Fix #3436 : Duplicate naming of local functions
9 months ago
Siegfried Pammer
51522c4487
Fix #3190 : NRE in YieldReturnDecompiler
10 months ago
Siegfried Pammer
355a039b59
Sightly improve variable naming of known types such as EventArgs and Exceptions
10 months ago
Siegfried Pammer
8a67f48e4e
Fix #1956 : Adapt previous fix for variable names that have a number as suffix.
10 months ago
Siegfried Pammer
ffcd468d22
Fix #1572 : parameters of lambdas and local functions are renamed, if there are with names from outer scopes collisions.
10 months ago
Siegfried Pammer
03aecf047d
Add VariableScope and rework AssignVariableNames step to support renaming parameters of nested ILFunctions in the future.
10 months ago
Siegfried Pammer
a599aae54d
#1572 : Do not generate variable names that match C# keywords.
10 months ago
Siegfried Pammer
73e9771d3c
Fix #2269 : LocalFunctionDecompiler misplaces nested local functions in ctors
10 months ago