Siegfried Pammer
c641072685
Translate MatchInstruction to BinaryOperatorExpression with BinaryOperatorType.IsPattern.
4 years ago
Daniel Grunwald
040ab41c69
Initial implementation of the pattern matching transform.
4 years ago
Siegfried Pammer
8eafbb3d90
Fix #2092 : aggressively inline code in compiler-generated lambdas and expression trees.
4 years ago
Siegfried Pammer
164c8880af
#2092 : Make TransformExpressionTrees.MatchGetTypeFromHandle and TransformExpressionTrees.MatchGetContructorFromHandle use IType.FullName instead of actual IType instances, so we can better handle assemblies processed by tools like ILMerge, where there might be used multiple versions of mscorlib in one assembly.
4 years ago
Daniel Grunwald
245261a1e5
#nullable enable for Instructions.tt
4 years ago
Daniel Grunwald
0414e7f8e9
Fix potential NRE in ILFunction.RegisterVariable()
4 years ago
Siegfried Pammer
c22977e1be
Fix #2390 : Extend variable splitting to treat stobj as immediate address use.
4 years ago
Daniel Grunwald
5fb2f7a22f
#nullable enable for ILAst (except for generated code)
4 years ago
Daniel Grunwald
109b6d073a
Allow detecting exit points across multiple levels of containers.
4 years ago
Daniel Grunwald
a716828065
Remove redundant code from RemoveRedundantReturn.cs
4 years ago
Siegfried Pammer
1f0f6404e0
Fix #2231 : Add support for ldloca; dup; initobj pattern used by Roslyn.
4 years ago
Daniel Grunwald
685a79dc31
DetectExitPoints: introduce exit points for loops+switch
...
This allows reverting the changes to HighLevelLoopTransform+ReduceNestingTransform from the previous commit, which fixes a bug in loop detection (the previous commit did not handle loops where the loop BlockContainer didn't have a Block as parent).
4 years ago
Siegfried Pammer
62fc4bc1a3
Fix #1858 , Fix #2188 : Remove variables that contain copies of display-class variables.
4 years ago
Daniel Grunwald
6757295b3b
Fix #2379 : Keep `return` statements around in original form for ConditionDetection, only transform to fall-through block-exit at the end of the transform pipeline.
...
This fixes an issue where `return` statements within try-blocks could turn into `goto` statements.
4 years ago
Siegfried Pammer
584d1847df
Fix #2405 : Assertion fail in TDCU
4 years ago
Siegfried Pammer
2d65deffda
Fix frontends.sln build.
4 years ago
Siegfried Pammer
ba39dd5c55
Fix #2354 : decompilation of unary and binary operators with nullable value types.
4 years ago
Daniel Grunwald
407ec6be5b
Adjust AsyncAwaitDecompiler to Roslyn 3.9.0.
4 years ago
Siegfried Pammer
d92dd153fc
#2390 : Make sure all unused captured variables are removed even in lambdas.
4 years ago
Siegfried Pammer
e20ace0098
Fix build.
4 years ago
Siegfried Pammer
d54016ce8f
#2390 : Add support for generic object initializers.
4 years ago
Daniel Grunwald
bd9aabeae2
Update to dotnet-format 5.1.225507.
...
This makes the formatting expected by our CI consistent with that generated by VS2019.9.
4 years ago
Siegfried Pammer
7211587b45
Fix #2366 : NRE in AwaitInCatchTransform.MatchAwaitCatchHandler() and pattern errors when dealing with a switch-based jump table in AwaitInCatchTransform
4 years ago
Siegfried Pammer
76227af89d
Fix #1749 , fix #2339 , fix #2353 : Add support for rethrow in async exception handlers, fix await catch/finally patterns for complex methods.
4 years ago
Siegfried Pammer
d2fc380e0e
Fix #2349 : Use proper ExpressionType with DynamicCompoundAssign.
4 years ago
Siegfried Pammer
d60f158dfd
Fix #2342 : Do not generate empty names for foreach loop variables.
4 years ago
Siegfried Pammer
4ae41a855e
Fix #2321 : Missing readonly modifier for ref local
4 years ago
Daniel Grunwald
eec24ee6bb
Fix #2311 : Handle additional `comp` instruction in `IsNullSafeArrayToPointerNotNullBlock`
4 years ago
Daniel Grunwald
f726a0b73e
#nullable enable for typesystem and ILInstruction base class
4 years ago
Siegfried Pammer
67be41a998
#2294 : Fix potential NRE: finalStore is accessed before null check.
4 years ago
文煌
581a1de185
fix https://github.com/icsharpcode/ILSpy/issues/2288
4 years ago
Daniel Grunwald
6951ccb1a2
Fix #2260 : switch(string) transform: handle empty cases where the C# compiler optimizes out the `if`
...
e.g.
```
switch (<PrivateImplementationDetails>.ComputeStringHash(text2))
{
case 1288728352u:
_ = text2 == "rowno";
break;
...
```
4 years ago
Siegfried Pammer
669fe6417e
Fix #2280 : Add additional checks to GenerateVariableName
4 years ago
Siegfried Pammer
66850e4725
Fix #2270 : I love deleting code that causes problems and no longer makes any sense at all!
4 years ago
Siegfried Pammer
288c6a75e7
Use ToLower instead of ToLowerInvariant.
4 years ago
Siegfried Pammer
dd84f17ea1
#2263 : Fix IsLowerCase to take script without upper/lower case distinction into account.
4 years ago
Siegfried Pammer
06bae54b91
Fix #2263 : Add lower-case type and member names to the list of existing names, to prevent collisions.
4 years ago
Siegfried Pammer
3676107379
Fix #2266 : Failed to decompile complex expression tree.
4 years ago
Siegfried Pammer
3df82cf33b
Add support for 'with' expressions
4 years ago
Siegfried Pammer
9932b5d9f2
Fix #2230 : do not emit directly consecutive null propagation operators.
4 years ago
Siegfried Pammer
c986dbe889
Fixes #2232 : We only need a small percentage of features provided by Humanizer. Therefore we copy the relevant parts and remove the dependency in order to avoid such problems in the future.
5 years ago
Siegfried Pammer
d0d8299ef5
Use Name from DynamicInvokeMemberInstruction when inferring variable names.
5 years ago
Daniel Grunwald
6e8c1b3117
ILReader: support comparison between StackType.Ref and StackType.I
...
Update Unsafe.il tests to .NET 5.0 version.
5 years ago
Daniel Grunwald
782e4ae88c
Fix #2215 : Use `Unsafe` intrinsics for `ldobj`/`stobj` instructions.
...
Use `Unsafe.As` to adjust the type of a managed reference if necessary (without converting to a pointer type).
This also adds support for the `ReadUnaligned`/`WriteUnaligned` intrinsics.
5 years ago
Siegfried Pammer
b7d2eec41d
#2199 : Add support for VB cached delegate initialization
5 years ago
Siegfried Pammer
d3b0e4cd72
Fix #2196 : Add support for extern local functions.
5 years ago
Siegfried Pammer
a7f58e8657
Fix build and use specific version of dotnet-format.
5 years ago
Siegfried Pammer
3a7c69e5b9
Fix #2192 : Add support for VB.NET delegate construction
5 years ago
Siegfried Pammer
be57dc454c
Run tests with different versions of Roslyn
5 years ago
Daniel Grunwald
80cf72e498
#2182 : Move "Transform call to struct constructor" from EarlyExpressionTransforms to ILReader.
...
This fixes the evaluation order for such calls (and an assertion in StObj.CheckTargetSlot).
5 years ago