mirror of https://github.com/icsharpcode/ILSpy.git
Tree:
89719860b9
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 }
4 Commits (89719860b917d4634eec1dda8bdca63a14bdda5b)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
90d563b796 |
Walk the step tree with the helper the repo already has
Three copies of the same pre-order walk across two test files become TreeTraversal.PreOrder, and the stepper fixture builds its decompiler through the file-name constructor instead of assembling the type system by hand. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
3 weeks ago |
|
|
b8d68d9143 |
Give the builder output a step of its own
The state the ExpressionBuilder and StatementBuilder leave behind was only reachable as "state before the first AST transform" - an entry that names a transform rather than the state, and that sits below every member's group in a tree with one group per member. It is now a top-level step at the seam, where the whole type is converted and nothing has transformed it yet. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
3 weeks ago |
|
|
0b4b2a3f08 |
Record the whole pipeline or none of it
Recording only gated the IL half, so a run with it off still numbered the C# AST transforms into the shared stepper. That gave one pipeline two numbering scales, and a step index is only meaningful against the scale it was recorded on: a tree captured under one and replayed under the other selects a different step. It also let the crashed-member attribution fire on a counter that had never moved - a limit of zero matched at every throwing transform and rendered an unrelated member's ILAst. The flag now gates both halves, so steps exist exactly when recording is on, and it lives on the pane instance rather than a static the background decompile read across threads. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
3 weeks ago |
|
|
a5bd230e14 |
Walk the whole decompiler pipeline in the Debug Steps pane
The pane used to split the pipeline across two languages: the ILAst language stepped the IL transforms, the C# language stepped the AST transforms, and nothing showed the seam between them, so a step index meant a different thing depending on which language happened to be selected. Recording both halves into one Stepper makes an index replayable across the whole pipeline; a limit that lands in the IL phase has no C# to print, so the halted function is rendered as ILAst instead. Which function that is takes some care, because a member group's EndStep is the next member's first step: a halt standing on a member's opening step belongs to the member that just finished, a transform that throws where the limit was aimed has to hand over the ILAst it half-transformed (what the ILAst language showed as "ILAst after the crash"), and a step recorded on a helper function the pipeline has not attached yet belongs to that function's own tree. Retention stays opt-in twice over: the decompiler records IL steps only when asked to, and the pane asks only while its view is on screen. Every kept step pins the ILAst it captured, which for one type runs to tens of thousands of nodes, so a closed pane would be paying for a tree nobody displays. What is left of the ILAst language is its typed-IL dump, which runs no transforms at all. That stays, as TypedILLanguage. IDebugStepProvider was down to a single implementation and is removed. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
3 weeks ago |