ANcpLua.Roslyn.Utilities
Comprehensive utilities for Roslyn analyzers and incremental source generators.
Installation
dotnet add package ANcpLua.Roslyn.Utilities
Overview
| Category | Key Types |
|---|---|
| Flow Control | DiagnosticFlow<T> |
| Validation | SemanticGuard<T> |
| Pattern Matching | SymbolPattern, Match.*, Invoke.* |
| Domain Contexts | AwaitableContext, AspNetContext, DisposableContext, CollectionContext |
| Code Generation | IndentedStringBuilder, GeneratedCodeHelpers |
| Caching | EquatableArray<T>, HashCombiner |
Quick Examples
Railway-Oriented Pipelines
symbol.ToFlow(nullDiag)
.Then(ValidateMethod)
.Where(m => m.IsAsync, asyncRequired)
.WarnIf(m => m.IsObsolete, obsoleteWarn)
.Then(GenerateCode);
Pattern Matching
var asyncTask = SymbolPattern.Method()
.Async()
.ReturnsTask()
.WithCancellationToken()
.Public()
.Build();
if (asyncTask.Matches(method)) { ... }
Declarative Validation
SemanticGuard.ForMethod(method)
.MustBeAsync(asyncRequired)
.MustReturnTask(taskRequired)
.MustHaveCancellationToken(ctRequired)
.ToFlow();
Extension Methods
The library provides 170+ extension methods across 20 classes:
| Class | Purpose |
|---|---|
SymbolExtensions |
Equality, attributes, visibility, names |
TypeSymbolExtensions |
Inheritance, interfaces, special types |
MethodSymbolExtensions |
Overrides, interface implementations |
OperationExtensions |
Tree traversal, context detection |
InvocationExtensions |
Method call analysis |
IncrementalValuesProviderExtensions |
Pipeline helpers |
SourceProductionContextExtensions |
Source output |
StringExtensions |
Zero-allocation parsing |
EnumerableExtensions |
Null-safe LINQ |
Documentation
- DiagnosticFlow - Railway-oriented programming
- SemanticGuard - Declarative validation
- Pattern Matching - Composable symbol patterns
- Domain Contexts - Awaitable, ASP.NET, Disposable, Collection
- Pipeline Extensions - Generator pipeline helpers
- Symbol Extensions - Symbol analysis utilities
- Operation Extensions - IOperation tree traversal
- Code Generation - IndentedStringBuilder, helpers