mirror of https://github.com/icsharpcode/ILSpy.git
Tree:
05d274ff72
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 (05d274ff727ebbef447bc01b0028299839aee6cf)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
56f639b615 |
Read a decompdiff corpus from an @list file
Handing the corpus over as `$(cat list)` is a bourne shell construct, so the one invocation the tools print and the README documents did not work on Windows. nugetfuzz already reads its package list from an @file for the same reason; decompdiff now takes its corpus entries the same way, leaving the shell out of it entirely. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
3 weeks ago |
|
|
f440f28301 |
Accept a commit-ish as a decompdiff side
Comparing two commits meant preparing a worktree for each by hand before the tool could be called, which is most of the work of running it and easy to get wrong: a checkout carrying a stale Release build is reused silently, and the timestamp in the header line was the only thing that said so. --old and --new now also take anything git can resolve to a commit, checked out into a worktree under ~/.cache/decompdiff keyed by that commit. The worktrees are kept because the Release build inside one is what a rerun would otherwise repeat: a second run of the same pair drops from minutes to seconds. Paths keep priority over refs, so an existing directory never changes meaning. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
3 weeks ago |
|
|
0f4bb196e6 |
Bind each corpus assembly against its own reference-assembly pack
decompdiff indexed the Microsoft.NETFramework.ReferenceAssemblies packs into one flat name map shared by the whole corpus, and never indexed Microsoft.NETCore.App.Ref at all. Ordering the packs by name let net45 claim mscorlib and System.Runtime, so a net9.0 assembly resolved its BCL against .NET Framework 4.5: Task, ValueTask and the async method builders came back as UnknownType, AsyncAwaitDecompiler could not match a state machine, and every async method decompiled as a raw MoveNext. Both sides of a diff degraded identically, so comparisons stayed valid, but the corpus stopped representing modern code. Over 28 nuget assemblies the same run reports 338 //IL_ warnings instead of 18202, 237 leaked <> names instead of 15654, and 116k fewer lines. The pack is now chosen per assembly from its TargetFrameworkAttribute and searched before anything else, matching how nugetfuzz already resolves them. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
3 weeks ago |
|
|
1da62d9e08 |
Add TestTools with the nugetfuzz and decompdiff corpus tools
Both tools have found real decompiler defects (several merged fixes came out of nugetfuzz sweeps), but they only existed in a private checkout, so nobody else could run them and their setup knowledge lived in one head. They complement the fixture suite from the other side: it decompiles code we wrote, these decompile what the world ships. They stay outside the solution - file-based apps, run by hand, never by CI - and the near-empty Directory.Build.props/Directory.Packages.props keep the repo-wide warnings-as-errors, lock-file and central-package-management settings from reaching them. The catalog sweep driver is PowerShell rather than bash so it runs on Windows as well, which also drops its curl/jq dependency; staging falls back to copying when Windows withholds symlink privileges, and report file names are hash-truncated to stay inside the 260-character path limit. Assisted-by: Claude:claude-opus-5[1m]:Claude Code |
1 month ago |