Andrew Au
51bfebc6cd
Upgrade nuget package
5 years ago
Andrew Au
b935b4d065
Using the structured signature
5 years ago
Andrew Au
32723c95ad
Experiment with adding a link
5 years ago
Andrew Au
5dc79da07f
Using import cell name to describe callees
5 years ago
Siegfried Pammer
0df7e1e4a5
Fix #1999 : Compiler generated variables with weird names; by supporting a newer naming-convention used by mcs for anonymous delegates: See c2795c9cb5/mcs/mcs/delegate.cs (L808)
5 years ago
Siegfried Pammer
84a7c968c6
#1999 : Add EscapeInvalidIdentifiers flag to allow the use of the EscapeInvalidIdentifiers transform when writing files to disk. We still show the unescaped identifiers in the ILSpy UI.
5 years ago
Siegfried Pammer
5cba0ee631
Merge pull request #1986 from icsharpcode/ranges
...
Implement support for C# 8.0 indexing and slices (Ranges)
5 years ago
Siegfried Pammer
2e5a597300
Merge branch 'master' into ranges
5 years ago
Daniel Grunwald
2ed203c327
Merge pull request #1953 from icsharpcode/fix-1050
...
Fix #1050 : Add support for `?.` operator on unconstrained generic types.
5 years ago
Siegfried Pammer
5711185832
Make sure that the code and the pattern described in the comment above are in sync.
5 years ago
Daniel Grunwald
7d8b9fee1e
Remove redundant code.
5 years ago
Siegfried Pammer
b282cb7274
#1995 : Remove registration of DebugStepsPaneModel in case of release builds.
5 years ago
Daniel Grunwald
c71802fd7b
Merge pull request #1920 from icsharpcode/fix-1919
...
Fix #1919 : Use unmapped IL offsets at the start of a catch-block for the 'exception specifier' sequence point.
5 years ago
Siegfried Pammer
2f51f31257
PDBGen: avoid assertion failure, if there are instructions that are not supported in C# (e.g. calli)
5 years ago
Christoph Wille
2a9fcf1f8f
Merge pull request #1996 from icsharpcode/fix-licenses-again
...
Change license headers of two remaining files to the correct MIT header.
5 years ago
Siegfried Pammer
4558765941
Change license headers of two remaining files to the correct MIT header.
5 years ago
Siegfried Pammer
b114734128
Add Mode.UnconstrainedType and implement TransformNullPropagationOnUnconstrainedGenericExpression using TryNullPropagation.
5 years ago
Siegfried Pammer
2601d17919
Add clarifying comment to ExceptionSpecifierILRange
5 years ago
Siegfried Pammer
9c8df1d949
Fix assignment of ILRanges in ExpressionTransforms.TransformCatchVariable
5 years ago
Siegfried Pammer
794be9a5b4
Fix SequencePointBuilder.VisitCatchClause: do not create a sequence point from the catch-token to the closing brace.
5 years ago
Siegfried Pammer
6382f8c41d
Fix #1990 : Empty default ctor with XML comment discarded from decompilation
5 years ago
Siegfried Pammer
35a9ac7e74
Fix #1992 : Analyzer fails to find usages of a type when it is used as a type argument
5 years ago
Christoph Wille
3b74675f5e
Merge pull request #1994 from icsharpcode/fix-1985
...
Fix #1985 : BamlDecompiler.Tests License Header Mess
5 years ago
Siegfried Pammer
b84bcdc3a5
Fix #1985 : BamlDecompiler.Tests License Header Mess
5 years ago
Siegfried Pammer
effc49c479
Move TransformNullPropagationOnUnconstrainedGenericExpression into NullPropagationTransform and make use of IsValidAccessChain
5 years ago
Siegfried Pammer
1303c54086
Exactly match load, store and address counts of defaultTemporary.
5 years ago
Daniel Grunwald
b7754cdf5c
Workaround dotnet/roslyn#43659 in decompiled code.
5 years ago
Daniel Grunwald
cd04e80f5e
Use IsKnownType() when checking for System.Object
5 years ago
Siegfried Pammer
c9991d0787
Fix build.
5 years ago
Siegfried Pammer
ab89581eab
Fix JumpToReference/ReferenceSegment tuple mess.
5 years ago
Siegfried Pammer
40687ea8ad
#1498 : Remove Fusion API usage: Use standard file enumeration instead. This should enable us to use the GAC even with restricted access, as only the LIST permission is required.
5 years ago
Siegfried Pammer
7571b59abf
Improve DotNetCorePathFinderExtensions.DetectTargetFrameworkId to properly detect framework version of GAC assemblies.
5 years ago
Siegfried Pammer
5a66770b2c
Merge pull request #1987 from cshung/dev/andrewau/visualize-debug-bounds
...
#1886 : Decorate the ready to run disassembly with DebugInfoBounds
5 years ago
Daniel Grunwald
9659be0d55
#1946 : Fix IsBranchToReturnBlock() [was broken in c1265ad830
]
5 years ago
Siegfried Pammer
cba402955c
Add suggested improvements
5 years ago
Siegfried Pammer
0dfcafdfe8
Add preconfigured assembly list selection and rename command to ManageAssemblyListsDialog
5 years ago
Siegfried Pammer
60e9c204cc
Fix #1940 : Make sure that we use the correct .NET Core version, when there are multiple frameworks loaded in the current assembly list.
5 years ago
Siegfried Pammer
b92a4b956c
#1940 : Ignore nullability in ETs
5 years ago
Siegfried Pammer
c676665a61
#1940 : Refactor TransformExpressionTrees to support rolling back all changes if the transform fails.
5 years ago
Daniel Grunwald
c1265ad830
Fix #1946 : Don't move `return` into `try` block when doing so changes the semantics of a `finally` block.
5 years ago
Daniel Grunwald
2665d800d0
Update test to Roslyn 3.6.0-3.final.
5 years ago
Daniel Grunwald
2da513eb24
Fix #1988 : handle Roslyn 3.6 task creation pattern in async/await decompiler.
...
Roslyn 3.6 no longer makes a redundant copy of the `AsyncTaskMethodBuilder`, but directly calls `stateMachine.<>t__builder.Start(ref stateMachine);`
5 years ago
Daniel Grunwald
1926756cfa
Handle the special cases where the range does not have a start or endpoint.
5 years ago
Andrew Au
d92ca2ef79
Decorate the ready to run disassembly with DebugInfoBounds
5 years ago
Daniel Grunwald
0dd75d6852
Add support for slicing using C# 8 ranges.
5 years ago
Daniel Grunwald
aed358b5a0
Use more precise ResolveResult, so that Range/Index operators are hyperlinked.
5 years ago
Daniel Grunwald
dd54dbc144
Disable IndexRangeTransform if the "C# 8 ranges" setting is disabled.
5 years ago
Daniel Grunwald
dc38355e12
Support `list[^idx]`.
...
Here the C# compiler does not actually create a `System.Index` instance, but instead compiles to `list[list.Count - idx]`.
5 years ago
Daniel Grunwald
060830dd64
Variable splitting: support cases where a ref is passed through a ref-returning method, and then used.
...
From `IndexRangeTest.UseIndexForRef`:
```
stloc V_4(call GetSpan())
stloc S_19(ldloca V_4)
stloc V_2(call get_Length(ldloc S_19))
stloc V_3(call GetOffset(addressof System.Index(call GetIndex(ldc.i4 0)), ldloc V_2))
call UseRef(call get_Item(ldloc S_19, ldloc V_3))
stloc V_4(call GetSpan())
stloc S_30(ldloca V_4)
stloc V_2(binary.sub.i4(call get_Length(ldloc S_30), call GetInt(ldc.i4 0)))
call UseRef(call get_Item(ldloc S_30, ldloc V_2))
```
Due to `Span.get_Item` being a ref-return, it's possible that `ref V_4` is returned and passed into the `UseRef` method (this can't actually happen given Span's implementation, but it's a possible implementation of the get_Item type signature).
But we still need to split `V_4` -- it's a compiler-generated variable and needs to be inlined.
I think we can do this relatively simply by continuing to go up the ancestor instructions when we hit a ref-returning call. The recursive `DetermineAddressUse` call will check that there are no stores to `V_4` between the `get_Item` call and the point where the returned reference is used. Thus we still ensure that we don't split a variable while there is a live reference to it.
5 years ago
Daniel Grunwald
12226c5f90
Add support for indexing a container with a System.Index instance.
5 years ago