Skip to content
This repository was archived by the owner on Mar 22, 2024. It is now read-only.

Commit 24c2a2e

Browse files
committed
Added support to treat all symbols at once.
1 parent df2be94 commit 24c2a2e

3 files changed

Lines changed: 15 additions & 12 deletions

File tree

src/AttributeSourceGenerator/AttributeIncrementalGeneratorBase.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Text;
1+
using System.Collections.Immutable;
2+
using System.Text;
23
using AttributeSourceGenerator.Common;
34
using AttributeSourceGenerator.Models;
45
using Microsoft.CodeAnalysis;
@@ -36,8 +37,8 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
3637
{
3738
context.RegisterPostInitializationOutput(AddMarkerAttributeSource);
3839

39-
var syntaxProvider = context.SyntaxProvider.ForAttributeWithMetadataName(_configuration.MarkerAttributeName, Filter, Transform);
40-
context.RegisterSourceOutput(syntaxProvider, GenerateSourceForSymbol);
40+
var syntaxProvider = context.SyntaxProvider.ForAttributeWithMetadataName(_configuration.MarkerAttributeName, Filter, Transform).Collect();
41+
context.RegisterSourceOutput(syntaxProvider, GenerateSourceForSymbols);
4142
}
4243

4344
/// <summary>Adds the marker attribute source to the output.</summary>
@@ -129,12 +130,12 @@ private static Symbol Transform(GeneratorAttributeSyntaxContext context, Cancell
129130
return symbol;
130131
}
131132

132-
/// <summary>Generates source code for a given symbol.</summary>
133+
/// <summary>Generates source for the given symbols.</summary>
133134
/// <param name="context">The source production context.</param>
134-
/// <param name="symbol">The symbol to generate source for.</param>
135-
private void GenerateSourceForSymbol(SourceProductionContext context, Symbol symbol)
135+
/// <param name="symbols">The symbols to generate source for.</param>
136+
private void GenerateSourceForSymbols(SourceProductionContext context, ImmutableArray<Symbol> symbols)
136137
{
137-
var sources = _configuration.SourceGenerator(symbol);
138+
var sources = _configuration.SourceGenerator(symbols);
138139
foreach (var source in sources)
139140
context.AddSource($"{source.Name}.g.cs", source.Text);
140141
}

src/AttributeSourceGenerator/AttributeIncrementalGeneratorConfiguration.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace AttributeSourceGenerator;
1+
using System.Collections.Immutable;
2+
3+
namespace AttributeSourceGenerator;
24

35
/// <summary>Defines the configuration for an incremental attribute generator.</summary>
46
public sealed class AttributeIncrementalGeneratorConfiguration
@@ -13,7 +15,7 @@ public sealed class AttributeIncrementalGeneratorConfiguration
1315
public FilterType SymbolFilter { get; init; } = FilterType.All;
1416

1517
/// <summary>The function that generates the source code for the attribute.</summary>
16-
public required Func<Symbol, IEnumerable<Source>> SourceGenerator { get; init; }
18+
public required Func<ImmutableArray<Symbol>, IEnumerable<Source>> SourceGenerator { get; init; }
1719

1820
/// <summary>Initializes a new instance of the <see cref="AttributeIncrementalGeneratorConfiguration" /> class</summary>
1921
public AttributeIncrementalGeneratorConfiguration()

src/AttributeSourceGenerator/AttributeSourceGenerator.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<Nullable>enable</Nullable>
77
<RootNamespace>AttributeSourceGenerator</RootNamespace>
88
<LangVersion>latest</LangVersion>
9-
<Version>8.0.3</Version>
9+
<Version>8.0.4</Version>
1010
<Title>AttributeSourceGenerator</Title>
1111
<Authors>Jean-Sebastien Carle</Authors>
1212
<Description>A simple attribute-based Roslyn incremental source generator base class for .NET.</Description>
@@ -18,8 +18,8 @@
1818
<RepositoryUrl>https://github.com/jscarle/AttributeSourceGenerator</RepositoryUrl>
1919
<RepositoryType>git</RepositoryType>
2020
<PackageTags>attribute source-generator attribute-based source-generators</PackageTags>
21-
<AssemblyVersion>8.0.3.0</AssemblyVersion>
22-
<FileVersion>8.0.3.0</FileVersion>
21+
<AssemblyVersion>8.0.4.0</AssemblyVersion>
22+
<FileVersion>8.0.4.0</FileVersion>
2323
<NeutralLanguage>en-US</NeutralLanguage>
2424
<IncludeSymbols>true</IncludeSymbols>
2525
<SymbolPackageFormat>snupkg</SymbolPackageFormat>

0 commit comments

Comments
 (0)