Siegfried Pammer
b18653ba82
Fix #1319 : Property name collides with variable name
7 years ago
Daniel Grunwald
3cbadb7134
Fix #1301 : casts were unnecessarily marked as unchecked
7 years ago
Daniel Grunwald
0a9df3d373
Fix #1252 : Incorrect comparison type for lifted comparisons in expression trees.
7 years ago
Daniel Grunwald
b33d338558
Fix #1308 : Consider type hint in ldc.i8 translation.
7 years ago
Daniel Grunwald
35a0ee2263
Fix #1309 : Decompilation of dynamic casts.
7 years ago
Daniel Grunwald
e041454987
Add pretty tests for "yield return" and fix some minor bugs:
...
* remove redundant casts on yield-return-expression
* keep variable name from metadata for foreach loops
* fix 'yield break;' in nested try-finally sometimes causing a decompiler error
7 years ago
Siegfried Pammer
ee584f3260
Fix bug in string interpolation handling.
7 years ago
Daniel Grunwald
ef866040b4
Update to SRM 1.6.0 and Roslyn 2.9. Adjust decompiler to new code pattern used for lifted nullable comparisons.
7 years ago
Chicken-Bones
ab9397d099
Add ReduceNestingTransform
7 years ago
Siegfried Pammer
6719dacabd
Fix #1279 : Event fields in object initializers
7 years ago
Chicken-Bones
481e05eabb
Better shortcircuit detection to avoid single condition switch statements
7 years ago
Chicken-Bones
d8244e347b
Select outer-loop continue branches as break targets for switches in nested loops
7 years ago
Chicken-Bones
d86f4b4132
Prefer simple if statements over switch with single case block
7 years ago
Chicken-Bones
52a279f861
Restore HighLevelLoopTransform pattern match for loop contents within if body
7 years ago
Chicken-Bones
7017d998d0
Improve switch decompilation in loops via early detection of continue blocks.
7 years ago
Chicken-Bones
1a021635cc
Fix detection of switch statements with cases containing a single break;
...
Remedy incorrect assumption that the default case was special.
7 years ago
Chicken-Bones
cb4fa90545
Add IL ordering based hint to UseCSharpSwitch
7 years ago
Chicken-Bones
62b2ad4f8d
Improve UseCSharpSwitch to reduce over-aggressive use of switch producing poor quality code.
7 years ago
Chicken-Bones
9a3914fca9
Handle roslyn generated sub instructions in partitioned C# switch statements
7 years ago
Siegfried Pammer
a9c1b9d515
Fix #1250 : Missing enum to int cast in object initializer
7 years ago
Siegfried Pammer
9e01b3b5e1
Add test case.
7 years ago
Siegfried Pammer
4fab913bf6
Fix #1249 : Bug in detection of multiple nested expression trees in query expressions.
7 years ago
Siegfried Pammer
8d028b57ec
Add test cases.
7 years ago
Siegfried Pammer
4047c5c159
Add test case for #1224
7 years ago
Siegfried Pammer
0fc5c8b988
Add support for FormattableString patterns.
7 years ago
Siegfried Pammer
9ed65dc780
Add more tests, fix typo.
7 years ago
Andrey Shchekin
d15fe0f254
Fixed bug with decimal optional parameters not being resolved correctly.
...
Added option to uglify presentation of decimal constants (show `[DecimalConstant(...)]`).
7 years ago
Daniel Grunwald
dd5845e83d
Support short-circuiting operators with dynamic. (e.g. "if (x.A && x.B)" where "x" is dynamic)
7 years ago
Siegfried Pammer
82dcc09acf
#1083 : Add support for optional arguments to constructors and refactor CallBuilder a bit.
7 years ago
Chicken-Bones
5ed5ea0e0f
Improve block ordering in ConditionDetection using the ILOffsets of Leave instruction arguments
7 years ago
Daniel Grunwald
9479e8af13
Support overloaded operator &&/||.
7 years ago
Siegfried Pammer
080506bcbe
Add more tests.
7 years ago
Siegfried Pammer
f956e16f58
Add basic support for C# 4 optional arguments.
7 years ago
Siegfried Pammer
f1f70d0ded
Fix #1148 : Do not use hexadecimal display in enums if the value is negative.
7 years ago
Siegfried Pammer
39a9efde29
Fix #1220 : Auto Property named 'Item' decompiled as an invalid indexer
7 years ago
Siegfried Pammer
7df1ff3f93
Add more test cases to PropertiesAndEvents.
7 years ago
Siegfried Pammer
99f9ecadd3
Fix #1221 : Private setter-only properties are not decompiled correctly
7 years ago
Chicken-Bones
fe6a85fa68
Reverse Roslyn optimisation to favour && over & on boolean operands.
7 years ago
Daniel Grunwald
bafb6d1d49
Fix #1194 : empty if statements are decompiled into goto statements
7 years ago
Daniel Grunwald
d8c8a75c2e
Fix #1154 : Decompilation of fixed statement when pointer variable is unused
7 years ago
Daniel Grunwald
4580eab7ab
Disable ref inline assignments.
...
This increases the chances that we'll avoid CS8174: A declaration of a by-reference variable must have an initializer.
7 years ago
Daniel Grunwald
7ee686cb67
Allow splitting a variable even if it has its address taken and stored in a ref-local.
...
The currently implementation is somewhat minimal and only works in a very limited set of circumstances:
* the ref local is single-assignment
* the ref local is initialized directly with 'ldloca target; stloc ref_local',
not a derived pointer (e.g. 'ldloca target; ldflda F; stloc ref_local').
* all uses of the ref_local are immediately consuming the address
This improves variable splitting cases where the compiler re-uses a stack slot containing a reference,
e.g. in some cases of '?.' on Nullable<T>.
7 years ago
Daniel Grunwald
33ef82f75c
Fix #1082 : Add support for compound assignment with string.Concat().
...
Currently only supports the binary overloads of string.Concat().
7 years ago
Daniel Grunwald
b149238777
Introduce IType.IsByRefLike.
7 years ago
Siegfried Pammer
bf8bd6b597
Add missing ApplyAttributesToType in MetadataAssembly.ResolveMethodSpecification.
7 years ago
Daniel Grunwald
8f588208b9
Fix tuple type in 'new List<(int, string)>'.
7 years ago
Daniel Grunwald
64547de4a0
foreach loops now use "var" if the element type is a tuple and can be inferred from the collection type.
...
Additionally, the tuple element names inferred from the collection type are now used when translating the foreach body.
7 years ago
Daniel Grunwald
c85927b579
Add support for IndexerNameAttribute.
7 years ago
Siegfried Pammer
4cca07aeb3
TransformExpressionTrees: Fix bug in Expression.Quote handling
7 years ago
Daniel Grunwald
0f8c310de2
Started work on new resolved TS implementation that directly uses SRM.
...
This is a work-in-progress; ILSpy is not functional with this commit.
The old code path still exists but is broken because some classes were modified for the new system.
The new system is still highly incomplete (types only have fields, but no methods).
7 years ago