Source Generator Code Fixes
Source Generator Code Fixes
Section titled “Source Generator Code Fixes”The source-generator package ships IDE code fixes alongside its diagnostics. Fixes live in a
separate analyzer assembly (Purview.EventSourcing.SourceGenerator.CodeFixes) so the core
Purview.EventSourcing.SourceGenerator assembly never acquires a Microsoft.CodeAnalysis.Workspaces
dependency.
Assembly separation
Section titled “Assembly separation”| Assembly | Contents | Workspaces dependency |
|---|---|---|
Purview.EventSourcing.SourceGenerator |
Incremental generators, the analyzer, and all diagnostic descriptors | None |
Purview.EventSourcing.SourceGenerator.CodeFixes |
CodeFixProvider implementations that use DocumentEditor / SyntaxGenerator |
Yes (PrivateAssets) |
Both assemblies are packed under analyzers/dotnet/cs of Purview.EventSourcing. No Workspaces
assembly is shipped in the package and no Workspaces dependency flows into consumer projects. The
compiler loads the code-fix assembly without instantiating its Workspaces-dependent types; the IDE
activates them for code fixes.
Available fixes
Section titled “Available fixes”| Diagnostic | Fix | Notes |
|---|---|---|
EVENTSTORE001 (aggregate must be partial) |
Adds partial to the aggregate declaration |
Trivia, nesting, generic parameters, and accessibility preserved |
EVENTSTORE101 (value object must be partial) |
Adds partial to the value-object declaration |
Works for record structs, structs, and classes |
EVENTSTORE007 (event method must be partial) |
Adds partial to the method |
|
EVENTSTORE021 (schema version must be positive) |
Resets the version to 1 |
Only when the version argument is explicit |
EVENTSTORE022 (duplicate schema version) |
Moves the version to the next unused version on the aggregate | Only when the version argument is explicit |
Fixes use stable equivalence keys and support Fix All where safe. No fix is offered when a correct correction is ambiguous (for example a renamed event contract or an incompatible payload change); the diagnostic message provides guidance instead.
Reference
Section titled “Reference”The fixes share the diagnostic descriptors defined in the source-generator assembly via
InternalsVisibleTo; no diagnostic is defined in the code-fix assembly.