Daniel Grunwald
539e3a906d
Fix #1552 : user-defined and decimal increments
...
For user-defined increments, there were problems with Roslyn was optimizing out one of the stores.
The new transform FixRemainingIncrements now takes increments/decrements that were not detected by TransformAssignment and introduces a temporary variable that can be incremented.
This sometimes requires un-inlining via the new ILInstruction.Extract() operation.
Extract() is not supported in all possible contexts, so it is possible but unlikely that some op_Increment calls remain.
For decimals, the situation is different: legacy csc actually was optimizing "d + 1m" to "op_Increment(d)", so we can get rid of any left-over increments by undoing this optimization. This now happens in ReplaceMethodCallsWithOperators.
7 years ago
Daniel Grunwald
33c7425fa2
Fix several bugs with compound assignments on indexers.
...
Closes #1580 .
7 years ago
Siegfried Pammer
cf77457afa
Merge IncrementDecrement.cs into CompoundAssignmentTest
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.
8 years ago
Daniel Grunwald
33ef82f75c
Fix #1082 : Add support for compound assignment with string.Concat().
...
Currently only supports the binary overloads of string.Concat().
8 years ago
Siegfried Pammer
5856df001a
Fix #1111 : Only hide "enum value initializers" when all of them can be hidden or only the first needs to be specified.
8 years ago
Daniel Grunwald
f4bbd100b9
Fix user-defined op_Addition 'p += 1;' being turned into 'p++;'
8 years ago
Siegfried Pammer
f4b2c83f1e
Add test cases for UserDefinedCompoundAssign
8 years ago
Siegfried Pammer
5dd7eaf129
Fix #1093 : Remove usage of type or this qualifiers, when possible.
8 years ago
Siegfried Pammer
62770cf94c
Fix #1095 : C# decompilation, for flags enums always use hex prefix
8 years ago
Daniel Grunwald
0a1921ff67
Fix #1007 : post-increment transform incorrect due to variable splitting.
8 years ago
Siegfried Pammer
16c900ebfa
Remove sequential values from enum members + display powers of two (- 1) as hex.
8 years ago
Daniel Grunwald
174a0d9eca
Add some more tests for compound assignment on struct members.
...
Closes #864 .
8 years ago
Daniel Grunwald
deca445d89
Restore the CopyPropagation's pass old position before the statement transforms.
...
Instead run TransformAssignment twice to avoid pass ordering issues.
8 years ago
Daniel Grunwald
7847a69d69
Fix compound assignment and post-increment.
8 years ago
Daniel Grunwald
40a4f08a8d
Add support for compound assignment of short integers.
8 years ago
Daniel Grunwald
248a9ad76f
Fix #954 : don't use invalid compound assignments on enums
8 years ago
Daniel Grunwald
89963ff8a5
Add a whole bunch of (failing) tests for post-increments.
8 years ago
Daniel Grunwald
39bb6856b7
Fix various bugs with compound assignments.
8 years ago
Siegfried Pammer
b5e46c3545
Fix #882 : Invalid assignment code after decompiling
8 years ago
Siegfried Pammer
c5012e876e
Convert integers to char literals in comparisons with char operands.
8 years ago
Siegfried Pammer
efca6babbd
Allow implicit conversions in return statements.
8 years ago
Siegfried Pammer
e26af08a1c
Move test projects to their own directory in \
9 years ago
Daniel Grunwald
bedff74b61
Run correctness tests with roslyn, and add some roslyn-based pretty-tests as well.
9 years ago
Siegfried Pammer
d1026c4646
Fix/Add more pretty tests for compound assignment
9 years ago
Siegfried Pammer
a674b4cdf1
Extend TransformAssignment
10 years ago
Siegfried Pammer
c0effc817c
Add more test cases to CompoundAssignmentTest and InlineAssignmentTest
10 years ago
Siegfried Pammer
ae75c57e22
Basic implementation of CompoundAssignmentInstruction
10 years ago
Siegfried Pammer
a813dddc01
Add basic compound assignment test
10 years ago
Siegfried Pammer
ee1b26d04d
Add TransformInlineAssignment and InlineAssignmentTest
10 years ago
Siegfried Pammer
02022c7290
Add PrettyTestRunner
10 years ago
Siegfried Pammer
9f161006a5
fix #560 : properly recognize `lock` pattern of C# 2, and add `lock (this)` pattern
11 years ago
Daniel Grunwald
2c75fada90
Update to NRefactory 5.4
12 years ago