mirror of https://github.com/icsharpcode/ILSpy.git
Branch:
tests/829-lambda-param-modifiers
christophwille/closedhierarchies
christophwille/membench
compound-assignment-operators
fix/1982-params-attribute-args
fix/2040-invalid-xml-characters
fix/2093-navigateto-reference-assembly
fix/2362-xalz-references
fix/2372-address-taken-by
fix/3282-indexer-optional-arguments
fix/3568-record-member-order
fix/4059-deconstruct-out-slots
fix/lambda-parameter-syntax
fix/scroll-children-on-expand
gh-pages
ldmembertoken
master
natural-type-lambdas-methods
null-coalescing-assignment
release/10.1
release/6.2
release/7.1
release/7.2
release/8.1
substring-optimizations
tests/829-async-method-builder-override
tests/829-collection-expressions
tests/829-compound-assignment-operators
tests/829-coverage-audit
tests/829-expression-tree-named-optional-args
tests/829-expression-variables-in-initializers
tests/829-extended-property-patterns
tests/829-extension-members
tests/829-extension-operators
tests/829-file-local-types
tests/829-improved-definite-assignment
tests/829-improved-overload-candidates
tests/829-inline-arrays
tests/829-interpolated-string-improvements
tests/829-lambda-param-modifiers
tests/829-list-patterns
tests/829-lock-object
tests/829-mixed-deconstruction
tests/829-null-coalescing-assignment
tests/829-null-conditional-assignment
tests/829-object-initializer-indexer
tests/829-overload-resolution-priority
tests/829-params-collections
tests/829-pattern-matching-improvements
tests/829-primary-constructors
tests/829-ref-unsafe-in-iterators-async
tests/829-sealed-record-tostring
tests/829-target-typed-conditional
tests/829-tuple-comparison
win-a11y-textsize
1.0-Beta
1.0-M1
1.0-M2
1.0-M3
1.0.0
2.0.0
2.1
2.2
2.3
2.3.1
3.0-Preview1
3.0-Preview2
3.0.2
v10.0
v10.0-preview1
v10.0-preview2
v10.0-preview3
v10.0.1
v10.1
v10.1.1
v11.0
v11.0-preview1
v11.0-rc
v2.3.2
v2.4
v3.0
v3.0-beta1
v3.0-beta2
v3.0-beta2a
v3.0-beta3
v3.0-beta4
v3.0.1
v3.1-beta1
v3.1-final
v3.1-rc
v3.2-beta
v3.2-rc
v3.2.0
v4.0
v4.0-alpha1
v4.0-beta1
v4.0-beta2
v4.0-beta3
v4.0-rc1
v4.0-rc2
v4.0.1
v5.0
v5.0-preview1
v5.0-preview2
v5.0-preview3
v5.0-preview4
v5.0-rc1
v5.0.1
v5.0.2
v6.0
v6.0-preview1
v6.0-preview2
v6.0-preview3
v6.0-preview4
v6.0-rc1
v6.1
v6.2
v6.2-preview1
v6.2-preview2
v6.2.1
v7.0
v7.0-preview1
v7.0-preview2
v7.0-preview3
v7.0-rc1
v7.0-rc2
v7.1
v7.2
v7.2-preview1
v7.2-preview2
v7.2-preview3
v7.2-preview4
v7.2-rc
v7.2.1
v8.0
v8.0-preview1
v8.0-preview2
v8.0-preview3
v8.0-preview4
v8.0-rc1
v8.1
v8.1.1
v8.2
v9.0
v9.0-preview1
v9.0-preview2
v9.0-preview3
v9.0-rc
v9.1
${ item.name }
${ noResults }
3 Commits (tests/829-lambda-param-modifiers)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
4c04e01882 |
Cover virtual, overloaded, and renamed-Implements parameterized properties
The renamed-Implements case exposed a gap: the accessor-method declarations did not include the explicit-interface-implementation forwarders generated from .override directives, so decompiled types did not implement their interfaces and same-name implementations lost their interface mapping. DecompileParameterizedProperty now emits the same forwarder stubs as the ordinary method path. Assisted-by: Claude:claude-fable-5:Claude Code |
2 months ago |
|
|
832090c08d |
Emit parameterized-property accessors as ordinary methods
C# cannot declare a named property with parameters: only the type's default member gets indexer syntax, and reusing it via [IndexerName] collapses for types with several differently-named indexed properties, static properties, or explicit interface implementations. Emitting the accessors as ordinary methods is the only fully general compilable form, matches how C# consumes such properties (Roslyn exposes the accessors of properties it cannot bind as regular methods, the same pattern C# 14 made user-facing for extension-member disambiguation), and round-trips call sites to identical IL. Call sites already lower to direct accessor calls. The property-level attributes are kept on the first accessor under the 'property:' attribute target: it is not valid on methods, so csc emits nothing for it (CS0657 warning) and recompilation neither loses the attributes from the source nor misapplies them to the accessor. A comment on the first accessor documents the deliberate deviation. Visual Studio's metadata-as-source view drops such properties' attributes entirely. The assembly tree and tooltips are unaffected: they keep rendering the property node with its parameter list. Known limitation, inherent to any C# projection: recompiling the output produces plain methods, so VB.NET consumers of the recompiled assembly lose property syntax. Assisted-by: Claude:claude-fable-5:Claude Code |
2 months ago |
|
|
4783fe1d34 |
Add VBPretty spec for VB.NET parameterized properties
C# has no syntax for named properties with parameters, so the expected output declares the accessors as ordinary methods, keeps the property-level attributes under the inert 'property:' attribute target (ignored by csc with CS0657), and consumes the properties through direct accessor calls, which Roslyn permits exactly for properties whose shape C# cannot bind. Red against the current decompiler, which emits a parameterless property whose body references the vanished parameters. Assisted-by: Claude:claude-fable-5:Claude Code |
2 months ago |