BadScript 2
Loading...
Searching...
No Matches
BadInteropGenerator.cs
Go to the documentation of this file.
1using System.Text;
2
5
6using Microsoft.CodeAnalysis;
7using Microsoft.CodeAnalysis.CSharp.Syntax;
8using Microsoft.CodeAnalysis.Text;
9
11
12[Generator]
13public class BadInteropGenerator : IIncrementalGenerator
14{
15 public void Initialize(IncrementalGeneratorInitializationContext context)
16 {
17 context.RegisterPostInitializationOutput(BadInteropStaticCode.RegisterAttributeSource);
18
19 IncrementalValuesProvider<ApiModel> pipeline = context.SyntaxProvider.ForAttributeWithMetadataName(
21 static (syntaxNode, _) => syntaxNode is ClassDeclarationSyntax,
22 static (context, _) =>
23 {
24 INamedTypeSymbol api = (INamedTypeSymbol)context.TargetSymbol;
26
27 return builder.GenerateModel(api);
28 }
29 );
30
31 context.RegisterSourceOutput(
32 pipeline,
33 static (context, model) =>
34 {
35 bool isError = false;
36 if (model.Diagnostics.Length != 0)
37 {
38 foreach (Diagnostic diagnostic in model.Diagnostics)
39 {
40 context.ReportDiagnostic(diagnostic);
41 isError |= diagnostic.Severity == DiagnosticSeverity.Error;
42 }
43 }
44
45 BadInteropApiSourceGenerator gen = new BadInteropApiSourceGenerator(context);
46 SourceText sourceText = SourceText.From(
47 gen.GenerateModelSource(context, model, isError),
48 Encoding.UTF8
49 );
50
51
52 context.AddSource($"{model.ClassName}.g.cs", sourceText);
53 }
54 );
55 }
56}
void Initialize(IncrementalGeneratorInitializationContext context)
static void RegisterAttributeSource(IncrementalGeneratorPostInitializationContext context)