public void Initialize(IncrementalGeneratorInitializationContext context) { IncrementalValuesProvider <TypeDeclarationSyntax> providerTypes = context.SyntaxProvider.CreateSyntaxProvider( (node, _) => SyntaxCollector.IsCandidateType(node), (syntaxContext, _) => (TypeDeclarationSyntax)syntaxContext.Node); IncrementalValuesProvider <InvocationExpressionSyntax> getServiceCalls = context.SyntaxProvider.CreateSyntaxProvider( (node, _) => SyntaxCollector.IsGetServiceExpression(node), (syntaxContext, _) => (InvocationExpressionSyntax)syntaxContext.Node); var collectedServiceCalls = getServiceCalls.Collect(); var providers = providerTypes.Combine(collectedServiceCalls).Combine(context.CompilationProvider); context.RegisterSourceOutput(providers, (productionContext, inputs) => Execute(new GeneratorContext( productionContext, ImmutableArray.Create(inputs.Item1.Item1), inputs.Item1.Item2, inputs.Item2))); context.RegisterPostInitializationOutput(c => { c.AddSource("Attributes.cs", ReadAttributesFile()); }); }
public GeneratorContext(CompilationAnalysisContext compilationAnalysisContext, SyntaxCollector syntaxCollector) { _compilationAnalysisContext = compilationAnalysisContext; CandidateGetServiceCalls = syntaxCollector.InvocationExpressions; CandidateTypes = syntaxCollector.CandidateTypes; Compilation = compilationAnalysisContext.Compilation; _sourceProductionContext = null; }
public override void Initialize(AnalysisContext context) { context.EnableConcurrentExecution(); context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.Analyze | GeneratedCodeAnalysisFlags.ReportDiagnostics); context.RegisterCompilationStartAction(compilationStartAnalysisContext => { var syntaxCollector = new SyntaxCollector(); compilationStartAnalysisContext.RegisterSyntaxNodeAction(analysisContext => { syntaxCollector.OnVisitSyntaxNode(analysisContext.Node); }, SyntaxKind.ClassDeclaration, SyntaxKind.InterfaceDeclaration, SyntaxKind.InvocationExpression); compilationStartAnalysisContext.RegisterCompilationEndAction(compilationContext => { Execute(new GeneratorContext(compilationContext, syntaxCollector)); }); }); }
public void Setup() { _collector = new SyntaxCollector(); }
public TemplateLexer(SyntaxCollector collector) { this.collector = collector; }
public GivenASyntaxCollector() { _collector = new SyntaxCollector(); }