mirror of https://github.com/icsharpcode/ILSpy.git
Tree:
38f54008d5
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 }
3 Commits (38f54008d569352fad130e2019d5773ab99dc3b7)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
cd10506c96 |
Fix #4079: make stable Roslyn restorable from the solution directory
ICSharpCode.Decompiler.Generators pins a stable Microsoft.CodeAnalysis.CSharp (a source generator must not reference a Roslyn newer than the host compiler) and ILSpy.AddIn.VS2022 pins a stable 4.0.1. Stable Roslyn lives only on nuget.org, but the repo-root NuGet.config mapped Microsoft.CodeAnalysis.* exclusively to the dotnet-tools feed, which carries only prerelease builds. Both projects worked around that with a per-project NuGet.config. dotnet restore honors it, since settings are computed per project directory, but Visual Studio starts NuGet.config discovery at the solution directory and never sees it: the first restore in VS on a machine with a cold NuGet cache fails with NU1103 exactly as reported. Once any successful restore has put the stable package into the global packages folder, source mapping is satisfied from the cache and the problem never reappears on that machine, which is why #3835 was closed as unreproducible. NuGet consults every source that declares the longest pattern matching a package id, so mapping Microsoft.CodeAnalysis.* to nuget.org as well as to dotnet-tools makes both feeds available for the whole family: the stable versions resolve from nuget.org and the prerelease $(RoslynVersion) from dotnet-tools. Both per-project configs are then redundant and removed. Verified with an empty NUGET_PACKAGES and the root config forced as the only config (simulating VS's discovery): the old config reproduces the reported NU1103; with the new config the generator, the decompiler tests (prerelease Roslyn) and the VS add-in (stable 4.0.1 with its Workspaces dependencies) all restore; restore.ps1 over ILSpy.sln leaves the lock files unchanged. Assisted-by: Claude:claude-fable-5:Claude Code |
3 weeks ago |
|
|
e264e926bb |
Enforce one child type per slot kind; de-alias shared kinds
A slot kind names one child position, so the generator emits a single typed Slots.X constant for it. A kind used with two different child types had to widen that constant to AstNode, and the typed GetChildren<T> accessor then cast the live AstNodeCollection<Concrete> to AstNodeCollection<AstNode> -- an InvalidCastException waiting for the first caller (latent today, but the model permitted it). Make the loose state unrepresentable instead of guarding it at runtime: DSTG001 errors when a [Slot] kind is declared with more than one child type. The six kinds that only coincidentally shared a name (Body, True, False, Initializer, SwitchSection, Variable) are split into precisely typed kinds; a genuinely either/or position (a lambda body) stays one declared type, AstNode. Every Slots.X now carries its real element type, so the GetChildren cast can no longer fail. Output is unchanged: the Pretty suite stays byte-identical with CheckInvariant green in DEBUG. Assisted-by: Claude:claude-opus-4-8:Claude Code |
3 months ago |
|
|
c174e4d6b1 |
Add the AST source generator for the C# syntax tree
Introduce a Roslyn source generator that emits the visitor boilerplate for the C# AST from [DecompilerAstNode]-tagged node declarations: the IAstVisitor interface, the AcceptVisitor overloads, the pattern-placeholder nodes, and the initial DoMatch support. AccessorKind lets an accessor's keyword be chosen independently of its role, an early step toward shedding the NRefactory role model. |
3 months ago |