Daniel Grunwald
b75c252193
Upgrade C# 8.0 nullability support for Roslyn 3.2.0-beta4.
6 years ago
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.
6 years ago
Siegfried Pammer
61231b7725
Fix #1593 : TransformCollectionAndObjectInitializers uses nested indexer call as target of object initializer.
6 years ago
Siegfried Pammer
01b8b83360
Fix CSharpDecompiler.ReadCodeMappingInfo not taking generic lambdas into account.
6 years ago
Daniel Grunwald
c56714c607
Fix assertion with async lambdas; fix async local functions.
6 years ago
Daniel Grunwald
0a54a93be0
Relax foreach transform to allow stack slots as foreach-variable again.
6 years ago
Daniel Grunwald
856cedc95e
#1456 : add test case; add additional checks to ensure we only transform normal locals into using/foreach-locals
6 years ago
Daniel Grunwald
beed6b5e24
Remove MarkGeneratedVariables() step in AsyncAwaitDecompiler.
...
This was left-over from earlier versions; but ILSpy stopped caring so much about variable vs. stack slot since Roslyn started to optimize more aggressively.
The change of variable type caused problems for debug information and could even cause an assertion.
Closes #1456 , closes #1562 .
6 years ago
Siegfried Pammer
174d14de3f
Merge pull request #1586 from icsharpcode/local-functions
...
C# 7.0 Local functions
6 years ago
Siegfried Pammer
f10ab69328
Improve local-function detection to minimize false positives.
6 years ago
Siegfried Pammer
a109b77858
Refactor LocalFunctionDecompiler to allow mutually recursive local functions to be decompiled correctly.
6 years ago
Siegfried Pammer
6234ff7c9a
Apply changes as requested per code review.
6 years ago
Siegfried Pammer
b7bf6b7720
Fix build again.
6 years ago
Daniel Grunwald
5a8796c05c
Reuse the existing TSAB.
6 years ago
Siegfried Pammer
dc74e4ee9d
Fix build.
6 years ago
Siegfried Pammer
763ea38644
Clean up CallBuilder.HandleDelegateConstruction
6 years ago
Siegfried Pammer
8bfd17404b
Merge branch 'master' of https://github.com/icsharpcode/ILSpy into local-functions
6 years ago
Siegfried Pammer
647f4fd545
Do not crash if the local function was not correctly transformed. This should only happen for generic local functions, which are currently not supported.
6 years ago
Siegfried Pammer
e215f69b2d
Extend description of LocalFunctionDecompiler
6 years ago
Siegfried Pammer
37e14f43e3
Refactor/Clean up local functions representation in type system.
6 years ago
Daniel Grunwald
fb2cbf3d62
Use <GenerateDocumentationFile> instead of specifying the file name.
6 years ago
Daniel Grunwald
33c7425fa2
Fix several bugs with compound assignments on indexers.
...
Closes #1580 .
6 years ago
Siegfried Pammer
f3f38783df
ICSharpCode.Decompiler roundtrip test now completes
6 years ago
Daniel Grunwald
ccdabf2325
Fix a bunch of XmlDoc compiler warnings.
6 years ago
Siegfried Pammer
e5d783b06a
Merge branch 'master' of https://github.com/icsharpcode/ILSpy into local-functions
6 years ago
Siegfried Pammer
0719aa9f08
Enable DecompilerSettings.IntroduceLocalFunctions
6 years ago
Daniel Grunwald
51d81f478a
Merge branch 'compound-assign'
6 years ago
Daniel Grunwald
b32cae412a
Eliminate BlockKind.PostfixOperator.
...
We can now represent all compound assignments using the CompoundAssignInstruction, including those on local variables.
Closes #1583 .
6 years ago
Daniel Grunwald
f2151972a0
Redesign CompoundAssignmentInstruction to support an 'Address' mode where we don't implicitly turn an LdObj into an StObj, but instead directly operate on an address.
...
This means we can get rid of the special case in TransformDisplayClassUsage, as compound.assign can now also be used with the address of a local variable.
6 years ago
Siegfried Pammer
bb066dbd04
Additional test (deactivated)
6 years ago
Siegfried Pammer
19a7898786
Add addressof(ldloc) => ldloca transform to EarlyExpressionTransforms
6 years ago
Siegfried Pammer
01e42b772c
Fix local functions inside lambdas.
6 years ago
Siegfried Pammer
b83cb41f2e
Add pretty tests for local functions.
6 years ago
Christoph Wille
268d0af4e0
Include documentation XML in NuGet package (similar to PR https://github.com/icsharpcode/ILSpy/pull/1432 but built for v5.0)
6 years ago
Siegfried Pammer
6f98ed5415
Fix unit tests.
6 years ago
Siegfried Pammer
8af609e7df
Merge branch 'master' of https://github.com/icsharpcode/ILSpy into local-functions
6 years ago
Siegfried Pammer
ec34ffd8d6
ILSpy-tests submodule updated
6 years ago
Christoph Wille
9f661f99f2
Add Microsoft.VisualStudio.SDK.Analyzers as per https://devblogs.microsoft.com/visualstudio/checklist-for-writing-great-visual-studio-extensions/ - Warnings not fixed
6 years ago
Siegfried Pammer
305b47245e
Refactor representation of local functions in ILAst.
6 years ago
Siegfried Pammer
89a50e64fc
Extension method syntax on lambda expressions/delegates is not allowed.
6 years ago
Siegfried Pammer
b42d4963e7
Fix assertions in TransformExpressionTrees.
6 years ago
Siegfried Pammer
16d6e16da7
Add support for local function references and recursive local functions.
6 years ago
Daniel Grunwald
dec9c83c4c
Fix #1570 : Handle ReflectionNameParseException when decoding invalid attribute arguments
6 years ago
Daniel Grunwald
688dffff2b
Add some string.Concat()-tests
6 years ago
Siegfried Pammer
5c9b3233cd
Fix bug overwriting settings default values on first load.
6 years ago
Siegfried Pammer
7d95516e85
Fix #1518 : Missing Detach()-call in AST manipulation.
6 years ago
Siegfried Pammer
6338bd1b85
Partially revert CheckNoNamedOrOptionalArguments.
6 years ago
Siegfried Pammer
d50b8d66d1
Fix #1373 , fix #1541 : add support for instance calls to CallIndirect.
6 years ago
Daniel Grunwald
a6def4cdf5
Fix incorrect type for numeric.compound.assign when the pointer type is incompatible with the store type.
...
Closes #1511 , #1530 , #1533 .
6 years ago
Daniel Grunwald
ed5d71b365
Fix #1537 : KeyNotFoundException in ReduceNestingTransform.ReduceSwitchNesting()
6 years ago