mirror of https://github.com/icsharpcode/ILSpy.git
Branch:
fix/lambda-parameter-syntax
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 }
6 Commits (fix/lambda-parameter-syntax)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
84a7839a29 |
Withdraw a window's Help items from the macOS app menu, and add a retention canary
The app-level NativeMenu declared in App.axaml lives as long as the process, while every MainWindow builds its own Help items over its own command instances (AboutCommand reaches the DockWorkspace and, through it, the whole app graph). PromoteHelpToMacAppMenu inserted each window's items without taking the previous window's out and nothing removed them on close, so on macOS the headless suite kept every test's app graph alive - the same 13 MB per test as the anchors fixed earlier on this branch, and the reason the memory win did not reproduce on macOS (retained gen2 still climbing to ~4 GB there while a Windows run peaks at 0.7 GB). Forcing the macOS path on Windows reproduces the growth (14.3 GB peak private bytes over the suite); withdrawn, it is 0.7 GB. Three smaller anchors of the same kind, found while making the canary below hold in the full suite: RichNodeText and AnalyzerTreeNode cached the first container's exports in statics, which subscribed later windows to a stale settings object, handed later analyzers the first test's assembly list, and kept the first app graph reachable for the run; and a search still in flight when its container went away kept its drain timer and IsSearching - hence the pane's indeterminate progress animation on the render clock - alive, retaining every window a search test closed mid-run (about 30 of them, ~400 MB). The canary test closes a MainWindow the way the per-test teardown does and waits for it to become collectable. It fails on any single anchor being restored (checked by leaving DetachFlyouts out), which is the regression guard the individual anchor fixes lacked; the teardown body is exposed as TearDownTestState so the test performs exactly what AfterTest does. Assisted-by: Claude:claude-fable-5:Claude Code |
4 weeks ago |
|
|
3b37eff5d3 |
Close every window a headless UI test showed, and let go of shared flyouts
The headless test host runs the app without an application lifetime, so the window-closing step in ResetAppState never had a list to work from and every MainWindow the suite showed stayed open - and reachable from the compositor, together with its view-models, assembly tree and loaded assemblies. Measured at about 13 MB per test, 15 GB over the suite, enough to page out the CI runner and stall the tests that scan process module lists. Closing is not sufficient on its own: Avalonia's Button subscribes to its flyout's Opened/Closed and only unsubscribes when the Flyout property changes, and Dock's ToolChromeControl theme hands every tool pane's chrome button one shared MenuFlyout resource, which therefore pinned every closed window's visual tree. The flyouts are detached before the window closes. Assisted-by: Claude:claude-fable-5:Claude Code |
4 weeks ago |
|
|
f53ca6d080 |
Drop redundant global:: qualifiers on ICSharpCode references
The global:: prefixes existed because the test project's namespace ICSharpCode.ILSpy.Tests used to shadow the app's old top-level ILSpy namespace. With the UI code back under ICSharpCode.ILSpy there is nothing left to shadow, so plain fully qualified names resolve fine. Assisted-by: Claude:claude-fable-5:Claude Code |
3 months ago |
|
|
51aafa0fd9 |
Move ILSpy UI code back to the ICSharpCode.ILSpy root namespace
The Avalonia port had placed the UI app in an ILSpy.* namespace tree, while the csproj RootNamespace and every prior release (through 10.1) use ICSharpCode.ILSpy.*. Restoring the historical namespace reduces the public API diff against release/10.1 for plugin authors and removes the shadowing that forced global:: qualifiers in the test project. The Images class and AccessOverlayIcon enum move back into the root namespace (as in 10.1), since an ICSharpCode.ILSpy.Images namespace would shadow the Images class for all code inside ICSharpCode.ILSpy. Assisted-by: Claude:claude-fable-5:Claude Code |
3 months ago |
|
|
4d99dea6c5 |
Drive decompiles to quiescence between headless tests
A test that triggers a decompile spawns a Task.Run plus dispatcher continuations and rarely awaits them; the per-test ResetAppState closed windows and drained the dispatcher but never cancelled the background work, so a continuation could land during the next test and read the swapped-in AppComposition.Current -- the dominant source of order-dependent flakiness (a different test tipped each run). Give DecompilerTabPageModel an internal CancelPendingAsync (store the in-flight decompile task, cancel its CTS, return it) and DockWorkspace a CancelPendingOperationsAsync that fans that across every document tab -- both legitimate shutdown hygiene too. ResetAppState.AfterTest now cancels and pumps the dispatcher until the work unwinds before the next test boots. This stops the random rotation of the failing test (the victims are now stable and diagnosable); two order-dependent failures remain (About-tab duplication and a nested-namespace tree race) that need their own fixes -- they still pass in isolation. |
3 months ago |
|
|
88da898d0c |
MEF basics
|
3 months ago |