Siegfried Pammer
1f4fd68b3f
Make optional AST slots nullable
...
Optional single-child slots return T? with a real null instead of a role
null-object, taking the C# grammar as the oracle for which slots are optional.
The generator emits the property type as T? and matches it with MatchOptional,
and consumers move from .IsNull to is null / ?.. This covers the optional
statement, member, try-catch, creation-initializer and pattern slots and the
optional NameSlot tokens. A few slots the grammar marks required but the
decompiler legitimately leaves empty (the implicit-element-access target, an
implicitly-typed lambda parameter's type) are flipped to nullable as well.
Assisted-by: Claude:claude-opus-4-8:Claude Code
2 weeks ago
Siegfried Pammer
77d57b91dc
Drop token nodes and move comments and directives to trivia
...
Comments and preprocessor directives were positional children interleaved
into the child list, and punctuation, keywords and operators were token-node
children. Add a leading/trailing trivia side-channel for comments and
directives, emit it from the output visitor, and re-home every comment
receiver onto it (including inside-block comments as comment-only empty
statements and undecodable attribute arguments as an ErrorExpression). With
locations and sequence points no longer sourced from token nodes, stop
reconstructing them on the locations path and delete CSharpTokenNode,
CSharpModifierToken and InsertSpecialsDecorator. The AST no longer carries
token children or positional comments; output is byte-identical.
Assisted-by: Claude:claude-opus-4-8:Claude Code
2 weeks ago
Siegfried Pammer
f987a6b041
Fix typo
3 months ago
Siegfried Pammer
77d9ee73e9
Fix IDE2000 globally
6 months ago
Siegfried Pammer
d70a5e7fb2
Fix #3626 : Do not emit named arguments for bool constants, if it causes the call to become ambiguous.
7 months ago
Siegfried Pammer
396b58031b
Add support for C# 14 first-class span types in the type system.
8 months ago
Peter Crabtree
e1e16b64f5
dev: Strip BOM mark from text files
10 months ago
Daniel Grunwald
bd9ee28552
Fix #1789 : missing hyperlink for `MethodGroupResolveResult`.
11 months ago
Maximilian Schmöcker
43bfaba7e0
Add ExpandParamsArguments DecompilerSettings
11 months ago
Maximilian Schmöcker
850ffe593d
Fix methods with mandatory arguments ignore disabled OptionalArguments setting
11 months ago
Siegfried Pammer
c9e3790adc
Remove UnresolvedUsingScope
11 months ago
Siegfried Pammer
d9bc4d19a2
Add support for newobj ROS(in arg) to TransformParamsArgument.
1 year ago
Siegfried Pammer
101ddf8783
Add support for constant slices of InlineArrays
1 year ago
Siegfried Pammer
79f7a188b0
Add support for C# 12 inline array expressions
1 year 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
d7d0f82418
Fix #3384 : add special case for null-literal conversions in optional argument handling.
1 year ago
Siegfried Pammer
c6e3752977
Fix #3089 : Add comment regarding .constraint prefix expressed as cast in C#
2 years ago
Siegfried Pammer
7b1f8a305c
Implemented support for string concatenation compound assignments involving ReadOnlySpan<char>.
2 years ago
Siegfried Pammer
1c71f6ad46
Support concatenation involving arguments of type ReadOnlySpan<char>.
2 years ago
Siegfried Pammer
9548a11d37
Use ILSpyHelper_AsRefReadOnly to ensure that overload resolution can pick the correct overload using 'in'.
2 years ago
Siegfried Pammer
03a20f3494
Support ILInlining for in parameters
2 years ago
Siegfried Pammer
e6004e5f26
Handle ReferenceKind.RefReadOnly in a few more cases
2 years ago
Siegfried Pammer
9d22e3ab41
NullableLiftingTransform: Undo new compiler optimization (omitting get_HasValue for comparisions with constants)
2 years ago
Siegfried Pammer
cf5f10067e
CallBuilder: Extract handling of interpolated string pattern into separate method.
2 years ago
Siegfried Pammer
4bf9487ecd
Remove IsRef, IsOut and IsIn flags from IParameter and Replace ParameterModifiers with ReferenceKind.
2 years ago
Siegfried Pammer
eae54ddf24
Fix #3014 : Missing type information in lambda expressions.
3 years ago
Siegfried Pammer
0fc003459f
Fix #3079 : Replace parameter names that consist of only whitespace
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
Siegfried Pammer
bde782e4f5
Fix #2806 : Do not use implicitly typed out variables, if argument and parameter types do not match exactly.
4 years ago
Standa Lukeš
6153f9cf35
Add test for indexer initializers
4 years ago
Siegfried Pammer
fbafc0289b
Fix #2741 : CallBuilder produces invalid invocation target when disambiguating calls to protected methods.
4 years ago
Siegfried Pammer
5078796b17
Add support for string format alignment.
4 years ago
Siegfried Pammer
6a27959cbc
Improve decompilation of delegate references of extension methods.
4 years ago
Siegfried Pammer
0bc11d05d3
Fix #2634 : target expressions of delegate references were not decompiled correctly
4 years ago
Siegfried Pammer
65f2c54166
Fix #2544 : do not transform to interpolated string, if the format string is not syntactically correct.
5 years ago
Siegfried Pammer
84101f804a
Fix #2444 : Ambiguous implicit conversions from null literals in decompiled code
5 years ago
Daniel Grunwald
ffed8ea2c8
#nullable enable for AstNode
5 years ago
Daniel Grunwald
514cf9b03b
Fix #1944 : Add support for implicit conversions with `in` parameters.
5 years ago
Siegfried Pammer
3a7c69e5b9
Fix #2192 : Add support for VB.NET delegate construction
6 years ago
Daniel Grunwald
d13a8bb64d
Support `ldftn` in the context of a function pointer.
6 years ago
Siegfried Pammer
04f9603768
Fix #2140 : ILSpy 6.2p1 no longer respects "use discards" setting
6 years ago
Siegfried Pammer
6d06abae1f
Fix OutOfRangeException in CallBuilder.CanInferTypeArgumentsFromArguments
6 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
6 years ago
Jesse Plamondon-Willard
1391e43d58
Add option to always qualify member references
6 years ago
Siegfried Pammer
a0d9410f67
Fix build.
6 years ago
Siegfried Pammer
05c988c5df
Revert "#2098: CallBuilder: Fix named argument handling in TI"
...
This partially reverts commit eea4b7701c .
6 years ago
Siegfried Pammer
eea4b7701c
#2098 : CallBuilder: Fix named argument handling in TI
6 years ago
Siegfried Pammer
18ace00266
Refactor LocalFunctionDeclarationStatement + LocalFunctionMethod
6 years ago
Siegfried Pammer
4f7ca65408
Fix #1913 : Make sure to declare local variables captured by local functions before the first invocation of the local function.
6 years ago
Daniel Grunwald
0dd75d6852
Add support for slicing using C# 8 ranges.
6 years ago