Siegfried Pammer
27e4bc578b
ref structs cannot be boxed
9 months ago
Siegfried Pammer
667036c54e
Add support for InlineArrayConversion
10 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.
1 year ago
Siegfried Pammer
202c5e22e3
Fix #3383 : more aggressively transform object initializers on structs
1 year ago
Siegfried Pammer
5a66518581
Add more tests for C# 12 ref readonly parameters
2 years ago
Daniel Grunwald
cda7ddff48
Fix test case to actually check the ToString() results.
3 years ago
Daniel Grunwald
99d5e94a62
Allow inlining value type temporaries into constrained call.
3 years ago
Daniel Grunwald
b93e65cdad
Fix #901 : Refactor ILReader: only read reachable code + support reimports
...
This makes our logic more similar to that used by the dotnet runtime. This lets us infer correct stack types in edge cases such as #2401 . It also improves support for obfuscated control flow such as #2878 .
3 years ago
Daniel Grunwald
9abc2b90da
Fix interaction of C# 11 nint==IntPtr with overload resolution.
...
In C# 11+.NET 7 mode, we now always use type nint, never IntPtr, so that overload resolution works as expected.
3 years ago
ElektroKill
c76f755ec6
Fix code style
3 years ago
ElektroKill
01fd6e97f3
Fixed overflow exception and added tests
3 years ago
Siegfried Pammer
f695bbcf3a
Add support for DefaultInterpolatedStringHandler
4 years ago
Siegfried Pammer
fbafc0289b
Fix #2741 : CallBuilder produces invalid invocation target when disambiguating calls to protected methods.
4 years ago
Siegfried Pammer
006bc18a96
Run ComInterop test case only on .NET 4.0.
4 years ago
Zachary Northrup
0921d83e0d
Add testing of overloaded methods to COM V-table test
4 years ago
Zachary Northrup
abf36b0f43
Add a unit test validating that COM V-table ordering doesn't change with mixed properties, methods, and events
4 years ago
Siegfried Pammer
41c99e4727
#2622 : Fix crash in ExpressionBuilder when decompiling object initializer composed of readonly properties.
4 years ago
Siegfried Pammer
84101f804a
Fix #2444 : Ambiguous implicit conversions from null literals in decompiled code
5 years ago
Daniel Grunwald
aae27900dc
Fix #2398 : TranslateCondition: truncate condition value if necessary
5 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.
5 years ago
Siegfried Pammer
d2fc380e0e
Fix #2349 : Use proper ExpressionType with DynamicCompoundAssign.
5 years ago
Daniel Grunwald
3c554b5e6c
Fix overload resolution: overloads with `in` parameters are applicable even if the argument is passed without explicit `in`
5 years ago
Daniel Grunwald
514cf9b03b
Fix #1944 : Add support for implicit conversions with `in` parameters.
5 years ago
Siegfried Pammer
be57dc454c
Run tests with different versions of Roslyn
6 years ago
Daniel Grunwald
7f915ad035
Add `OutVarResolveResult` to overload resolution (not yet used by CallBuilder)
6 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
6 years ago
Siegfried Pammer
1a3e70b60a
Fix warnings in test cases
6 years ago
Daniel Grunwald
1f9f9c3b24
Deconstruction: Correctness test where same variable is assigned twice.
6 years ago
Daniel Grunwald
102ddcadc7
#2050 : Add additional test where the integer field is nested in a struct field.
6 years ago
Siegfried Pammer
1ecf489597
Add support for deconstruction to fields
6 years ago
Siegfried Pammer
a549b03bea
Implement ref local assignments
6 years ago
Siegfried Pammer
7f4653c274
Add support for tuple deconstruction
6 years ago
Siegfried Pammer
9cb3fe3484
Add support for basic deconstruction conversions
6 years ago
Siegfried Pammer
b435c07f4d
Added support for deconstruction assignments to properties
6 years ago
Daniel Grunwald
1d684102ac
Support compound assignment for native integers.
6 years ago
Daniel Grunwald
62fcab8d99
#2050 : Allow inlining into the StObj target slot when this is possible without changing the program semantics.
6 years ago
Daniel Grunwald
925a4e1e65
#2050 : Don't put ldflda/ldelema with immediate exceptions into StObj.TargetSlot.
...
The C# translation of StObj will always apply delayed exceptions in these two cases, so putting an instruction with delayed exceptions in that slot would change program semantics.
6 years ago
Daniel Grunwald
c1265ad830
Fix #1946 : Don't move `return` into `try` block when doing so changes the semantics of a `finally` block.
6 years ago
Siegfried Pammer
73e0f7c3ac
Fix #1936 : TransformDisplayClassUsage should remove copies of display-class references.
6 years ago
Siegfried Pammer
60490a4369
#1869 : Add correctness test case
6 years ago
Daniel Grunwald
b9675f58b3
Fix #1865 : At least one of the first two operands in string concatenation needs to be of type `string`, so we can't always drop `ToString()` calls.
6 years ago
Daniel Grunwald
a1c211f326
Fix #1794 : Avoid extra cast to double for ulong -> float conversion
7 years ago
Daniel Grunwald
968fe1468f
Fix #1747 : Stack overflow when decompiling a `bool` -> `bool?` conversion.
7 years ago
Daniel Grunwald
080f63e660
Fix LambdaResolveResult.IsValid() being too restrictive.
...
This could cause our overload resolution to consider an overload as not-applicable when it actually is applicable. This could cause us to miss some cases where we need to insert casts.
7 years ago
Daniel Grunwald
1d95eb60a2
Fix #1680 : Invalid cast `(uint?)-1`
7 years ago
Daniel Grunwald
4b90e43187
Avoid making explicit ToString() implicit when doing so changes the semantics for mutable value types.
7 years ago
Daniel Grunwald
7a5d8af57d
#1691 : Further improvements for decompiling the new VS 2019.3 string concatenation IL pattern
7 years ago
Daniel Grunwald
c32361d464
#1691 : Avoid replacing string.Concat() with operator+ when the evaluation order depends on the compiler version.
7 years ago
Daniel Grunwald
fb70a2861e
Fix #1656 : Disable CopyPropagation for split variables.
...
The code reordering done by copy propagation could cause the lifetimes of different parts of a split variable to start overlapping. This caused incorrect C# to be generated when the variable was recombined.
7 years ago
Siegfried Pammer
e9a020062d
Add more RefLocalsAndReturns pretty tests.
7 years ago