Skip to content

Commit abfae6e

Browse files
authored
Merge pull request #857 from hadashiA/ku/fix-incremental-generation
Make incremental generator skip unchanged output
2 parents 51835a4 + 79b8ce5 commit abfae6e

9 files changed

Lines changed: 820 additions & 291 deletions

File tree

VContainer.SourceGenerator.Roslyn3/VContainer.SourceGenerator.Roslyn3.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<RootNamespace>VContaienr.SourceGenerator</RootNamespace>
55
<AnalyzerLanguage>cs</AnalyzerLanguage>
66
<IncludeBuildOutput>false</IncludeBuildOutput>
7-
<LangVersion>11</LangVersion>
7+
<LangVersion>12</LangVersion>
88
<Nullable>enable</Nullable>
99
<SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
1010
<DevelopmentDependency>true</DevelopmentDependency>

VContainer.SourceGenerator.Roslyn3/VContainerSourceGenerator.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,19 @@ public void Execute(GeneratorExecutionContext context)
5656

5757
static void Execute(TypeMeta typeMeta, CodeWriter codeWriter, ReferenceSymbols referenceSymbols, in GeneratorExecutionContext context)
5858
{
59-
if (Emitter.TryEmitGeneratedInjector(typeMeta, codeWriter, referenceSymbols, in context))
59+
var diagnostics = new System.Collections.Generic.List<DiagnosticInfo>();
60+
var model = InjectorModelBuilder.Build(typeMeta, referenceSymbols);
61+
if (Emitter.TryEmitGeneratedInjector(model, codeWriter, diagnostics))
6062
{
6163
var fullType = typeMeta.FullTypeName
6264
.Replace("global::", "")
6365
.Replace("<", "_")
6466
.Replace(">", "_");
6567
context.AddSource($"{fullType}GeneratedInjector.g.cs", codeWriter.ToString());
6668
}
69+
foreach (var diagnostic in diagnostics)
70+
{
71+
context.ReportDiagnostic(diagnostic.ToDiagnostic());
72+
}
6773
}
6874
}

VContainer.SourceGenerator/Analyzer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public static bool IsRegisterSyntaxCandidate(SyntaxNode syntax)
8989
}
9090
}
9191

92-
record struct TypeDeclarationCandidate(TypeDeclarationSyntax Syntax, SemanticModel SemanticModel)
92+
readonly record struct TypeDeclarationCandidate(TypeDeclarationSyntax Syntax, SemanticModel SemanticModel)
9393
{
9494
public TypeMeta? Analyze(ReferenceSymbols referenceSymbols, CancellationToken cancellation = default)
9595
{
@@ -100,7 +100,7 @@ record struct TypeDeclarationCandidate(TypeDeclarationSyntax Syntax, SemanticMod
100100
}
101101
}
102102

103-
record struct RegisterInvocationCandidate(InvocationExpressionSyntax Syntax, SemanticModel SemanticModel)
103+
readonly record struct RegisterInvocationCandidate(InvocationExpressionSyntax Syntax, SemanticModel SemanticModel)
104104
{
105105
public IEnumerable<TypeMeta> Analyze(ReferenceSymbols referenceSymbols, CancellationToken cancellation = default)
106106
{

0 commit comments

Comments
 (0)