mirror of https://github.com/icsharpcode/ILSpy.git
Tree:
52e2161ea7
christophwille/closedhierarchies
christophwille/contributing
christophwille/decompilerdocs
christophwille/membench
claude/ilspy-pr-3839-review-uo8q7r
collection-expression-tests
copilot/add-field-keyword-auto-properties
deconstruction-fixes
fix-3475-anonymous-type-null
fix-3860-outvar-explicit-type
fix/3465
fix/3518
gh-pages
issue1638
master
natural-type-lambdas-methods
null-coalescing-assignment
release/10.1
release/6.2
release/7.1
release/7.2
release/8.1
stash/beautify-enum-member-declarations
stash/dynamic-await
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
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 }
1 Commits (52e2161ea73bf96664ebaf7aa9734225eed44eb0)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
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 |
1 week ago |