Siegfried Pammer
a3191f19e2
Fix #2763 : Improve decompilation of switch-on-enum by preserving enum type information when inlining local variables into SwitchInstruction.Value.
3 years ago
hexafluoride
fc6ae4c645
Add option to always fully qualify type names with global::
3 years ago
Siegfried Pammer
48a8351e27
Use Unsafe.SizeOf when taking the size of a managed type.
3 years ago
Siegfried Pammer
5f324de10b
Add support for ref fields.
3 years ago
Daniel Grunwald
21c3ec046f
Output attributes on lambda expressions
3 years ago
Siegfried Pammer
f695bbcf3a
Add support for DefaultInterpolatedStringHandler
3 years ago
Siegfried Pammer
fbafc0289b
Fix #2741 : CallBuilder produces invalid invocation target when disambiguating calls to protected methods.
3 years ago
Siegfried Pammer
d3f8912d53
Handle special-cases with addressof:
...
- Never introduce casts for ldobj-address-chains
- Add special-case to TransformExpressionTrees: transform addressof(ldloc) to ldloca
- Classify foreach and using variables as readonly lvalues
3 years ago
Siegfried Pammer
702a7da2c3
Fix #2714 : Force inlining of call targets in ctor initializers.
3 years ago
Siegfried Pammer
6a27959cbc
Improve decompilation of delegate references of extension methods.
3 years ago
Siegfried Pammer
db034d3048
Remove incomplete/wrong support for null-forgiving operator.
3 years ago
Siegfried Pammer
41c99e4727
#2622 : Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties.
3 years ago
Daniel Grunwald
787621fb51
Revert "Use Nop instead of InvalidExpression to hold the "goto from catch-block to try-block" comment"
...
This reverts commit 77dcbbee86
.
4 years ago
Daniel Grunwald
77dcbbee86
Use Nop instead of InvalidExpression to hold the "goto from catch-block to try-block" comment
4 years ago
Daniel Grunwald
f104233e78
Fix #2388 : Add support for branch from catch-block to try-block (VB `On Error Resume Next`)
4 years ago
Daniel Grunwald
47b12a1d9a
Fix #2317 : Crash in ExpressionBuilder.VisitStLoc when storing to a null pointer
4 years ago
Daniel Grunwald
7f985757a7
Fix #2541 : Add explicit `unchecked()` around non-constant cast of constant to `nint`
4 years ago
Siegfried Pammer
e1ca4db851
Fix #2527 : Support skip locals init
4 years ago
Siegfried Pammer
6f032e267e
Fix #2515 : Auto events are not decompiled correctly, if left untouched.
4 years ago
Siegfried Pammer
1568aeca3e
Fix #2506 : NamedArgumentTransform loses information, if the original variable is of StackType.Ref
4 years ago
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
Daniel Grunwald
bbaddf84cc
Fix #2424 : Suppress the string==null special-case within the string class itself.
4 years ago
Daniel Grunwald
f327668928
Fix #2407 : Operator '-' cannot be applied to operand of type 'nuint'
4 years ago
Siegfried Pammer
d54016ce8f
#2390 : Add support for generic object initializers.
4 years ago
Daniel Grunwald
d917a3706b
Fix #2396 : Extend the #1903 workaround to unconstrained generic types.
...
The logic in the `FixLoneIsInst` transform already handled this correctly, it's just the check in the `isinst` translation that handled the `IsReferenceType == null` case incorrectly.
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
Daniel Grunwald
aae27900dc
Fix #2398 : TranslateCondition: truncate condition value if necessary
4 years ago
Daniel Grunwald
8d70d63dba
#2392 : Avoid some redundant casts with the `?:` operator.
4 years ago
Siegfried Pammer
280a94ce5d
Fix #1828 , Fix #2290 : Ensure base references have the correct type and are turned into this references and casted if necessary
4 years ago
Siegfried Pammer
3431881345
Fix #2307 : potential NRE in IntroduceExtensionMethods
4 years ago
Daniel Grunwald
51b3cf51c6
Fix #2305 : Cast to integer type where necessary in managed pointer arithmetic.
4 years ago
Daniel Grunwald
b4c5c0d212
Fix #2287 : Prefer `ref target.field[0]` over `ref *target.field`
4 years ago
Siegfried Pammer
afa4db00b6
Fix #2297 : Add an option to disable decompilation of getter-only auto properties.
4 years ago
Siegfried Pammer
63ca748b9a
Fix #2283 : string.to.int instruction entails a conversion to string of the input value
4 years ago
Siegfried Pammer
3d26536fff
Include checking for "this" when dealing with CSharpBinderFlags.InvokeSimpleName
4 years ago
Siegfried Pammer
f52ce79da0
Fix #2278 : Implement support for CSharpBinderFlags.InvokeSimpleName
4 years ago
Siegfried Pammer
69258806f6
Fix formatting
4 years ago
Siegfried Pammer
3df82cf33b
Add support for 'with' expressions
4 years ago
Siegfried Pammer
cfaf6cc93f
Fix #2222 : switch-expression does not support implicit conversions.
5 years ago
Daniel Grunwald
8a015ea512
Fix formatting.
5 years ago
Daniel Grunwald
411457c4c7
#1240 : Add support for Unsafe comparison intrinsics: `AreSame`, `IsAddressLessThan`, `IsAddressGreaterThan`
5 years ago
Daniel Grunwald
8e10ab2d80
Use type hints for pointers.
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
Daniel Grunwald
103a6461e4
Relax ExpressionBuilder invariant for lifted instructions with unknown result type.
5 years ago
Daniel Grunwald
6010757d22
Add support for .NET 5 custom calling conventions.
5 years ago
Daniel Grunwald
9381be2280
#2158 : Fix decompilation of arithmetic on managed pointers after ConversionKind.StartGCTracking.
5 years ago
Daniel Grunwald
a26a25d689
Fix #2158 : Remove PointerType support from CSharpResolver for additions/subtractions.
...
These have special semantics (number of elements in C# vs. number of bytes in IL), and so pointer arithmetic must go through the special HandlePointerArithmetic() code path --> the normal logic in HandleBinaryNumeric must not ever emit pointer arithmetic.
5 years ago
Siegfried Pammer
813cd1842f
#2156 : Enforce string type of string.to.int argument.
5 years ago
Siegfried Pammer
13636c89cc
Add support for C# 9: foreach with GetEnumerator extension methods.
5 years ago