mirror of https://github.com/icsharpcode/ILSpy.git
Tree:
7554c1b004
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
${ noResults }
2 Commits (7554c1b0042dddac2a7385cea5b64f12dd52281b)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
7554c1b004 |
Remove the syntactic automatic-event patterns
With recognition on the ILAst and reference substitution during translation, the four accessor-body patterns in PatternStatementTransform were only reachable as a fallback, and any divergence between them and the AutoEventDecompiler verdict produced inconsistent output. A compiler shape the ILAst matchers do not know now degrades to explicit accessors with the backing field kept in the output, which stays compilable. Bodyless events (abstract, extern, interface members) previously relied on the patterns' no-body clause to become field-like; since C# cannot express bodyless custom accessors, DoDecompile now chooses the field-like form for them directly. Also deletes the orphaned IsEventBackingFieldName helper; the name association lives in PropertyAndEventBackingFieldLookup. Assisted-by: Claude:claude-fable-5:Claude Code Claude-Session: https://claude.ai/code/session_01Btdypgm8utyxqt1Etn2BDi |
2 months ago |
|
|
5fa44fab6a |
Emit member-initializer sequence points in every constructor
A field, auto-property, or event initializer is written once at its declaration, but in IL it runs in every instance constructor that does not chain to this(...) (and static initializers run in the static constructor). The decompiler lifts the initializer from a single constructor, so its breakpoint was emitted only there and the other constructors had none. Two causes are addressed: - The lift discarded the initializer's copies in the other constructors. They are now kept on MemberInitializerInOtherConstructorsAnnotation and replayed by SequencePointBuilder, mapping the same source location onto each constructor's IL. - PortablePdbWriter only emitted methods that DebugInfoGenerator discovered through declaration syntax, so a constructor whose declaration is omitted from the output (implicit default ctor, implicit static ctor, primary ctor) dropped its generated points. Those functions are now emitted by walking the sequence-point map directly. PdbGen fixtures cover single, multiple, this()-chained, implicit, static, primary-constructor, and field-like event initializers, pinning the reconstructed breakpoint map against the C# compiler's. Assisted-by: Claude:claude-opus-4-8:Claude Code |
3 months ago |