Skip to content

Commit 1a87529

Browse files
committed
Started v5
1 parent 1c8a8d2 commit 1a87529

18 files changed

Lines changed: 136 additions & 19 deletions

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
strategy:
1111
matrix:
12-
roslyn: ["3.11", "4.0", "4.4"]
12+
roslyn: ["3.11", "4.0", "4.4", "5.0"]
1313
steps:
1414
- name: 🛒 Check-out code
1515
uses: actions/checkout@v4

AutoCtor.slnx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<Project Path="src/AutoCtor.Roslyn3.11/AutoCtor.Roslyn3.11.csproj" />
3030
<Project Path="src/AutoCtor.Roslyn4.0/AutoCtor.Roslyn4.0.csproj" />
3131
<Project Path="src/AutoCtor.Roslyn4.4/AutoCtor.Roslyn4.4.csproj" />
32+
<Project Path="src/AutoCtor.Roslyn5.0/AutoCtor.Roslyn5.0.csproj" />
3233
<Project Path="src/Shared/Shared.csproj" />
3334
<Project Path="src/Tests/Tests.csproj" />
3435
</Solution>

src/AutoCtor.Attributes/AutoCtor.Attributes.csproj

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>netstandard2.0</TargetFramework>
4+
<TargetFrameworks>netstandard2.0;net8.0;net9.0;net10.0;net462</TargetFrameworks>
55
<RootNamespace>AutoCtor</RootNamespace>
66
<IsPackable>true</IsPackable>
77
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
@@ -29,6 +29,8 @@
2929
PrivateAssets="All" ReferenceOutputAssembly="false" />
3030
<ProjectReference Include="..\AutoCtor.Roslyn4.4\AutoCtor.Roslyn4.4.csproj"
3131
PrivateAssets="All" ReferenceOutputAssembly="false" />
32+
<ProjectReference Include="..\AutoCtor.Roslyn5.0\AutoCtor.Roslyn5.0.csproj"
33+
PrivateAssets="All" ReferenceOutputAssembly="false" />
3234
</ItemGroup>
3335

3436
<ItemGroup>
@@ -41,6 +43,9 @@
4143
<None Include="$(ArtifactsPath)\bin\AutoCtor.Roslyn4.4\$(ArtifactsPivots)\AutoCtor.dll"
4244
Pack="true" PackagePath="analyzers/dotnet/roslyn4.4/cs" Visible="false"/>
4345

46+
<None Include="$(ArtifactsPath)\bin\AutoCtor.Roslyn5.0\$(ArtifactsPivots)\AutoCtor.dll"
47+
Pack="true" PackagePath="analyzers/dotnet/roslyn5.0/cs" Visible="false"/>
48+
4449
<None Include="$(ProjectDir)..\..\readme.nuget.md"
4550
Pack="true" PackagePath="\readme.md" Visible="false" />
4651
<None Include="$(ProjectDir)..\..\src\nugetfiles\AutoCtor.props"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using Microsoft.CodeAnalysis;
2+
3+
namespace AutoCtor;
4+
5+
public sealed partial class AttributeSourceGenerator : IIncrementalGenerator
6+
{
7+
public void Initialize(IncrementalGeneratorInitializationContext context)
8+
{
9+
context.RegisterPostInitializationOutput(static c =>
10+
c.AddSource(Emitter.HintName, Emitter.GenerateSource()));
11+
}
12+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Microsoft.CodeAnalysis;
2+
3+
namespace AutoCtor;
4+
5+
public sealed partial class AutoConstructSourceGenerator : IIncrementalGenerator
6+
{
7+
public void Initialize(IncrementalGeneratorInitializationContext context)
8+
{
9+
var properties = context.AnalyzerConfigOptionsProvider
10+
.Select(static (p, ct) =>
11+
{
12+
return p.GlobalOptions.TryGetValue("build_property.AutoCtorGuards", out var value)
13+
&& (value.Equals("true", StringComparison.OrdinalIgnoreCase)
14+
|| value.Equals("enable", StringComparison.OrdinalIgnoreCase));
15+
})
16+
.WithTrackingName(TrackingNames.BuildProperties);
17+
18+
var types = context.SyntaxProvider.ForAttributeWithMetadataName(
19+
AttributeNames.AutoConstruct,
20+
GeneratorUtilities.IsTypeDeclarationWithAttributes,
21+
static (c, ct) => TypeModel.Create((INamedTypeSymbol)c.TargetSymbol))
22+
.WithTrackingName(TrackingNames.TypeModels)
23+
.Collect();
24+
25+
var postCtorMethods = context.SyntaxProvider.ForAttributeWithMetadataName(
26+
AttributeNames.AutoPostConstruct,
27+
GeneratorUtilities.IsMethodDeclarationWithAttributes,
28+
static (c, ct) => PostCtorModel.Create((IMethodSymbol)c.TargetSymbol))
29+
.WithTrackingName(TrackingNames.PostCtorMethods)
30+
.Collect();
31+
32+
context.RegisterSourceOutput(
33+
types.Combine(postCtorMethods).Combine(properties),
34+
Emitter.GenerateSource);
35+
}
36+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<DefineConstants>$(DefineConstants);ROSLYN_5;ROSLYN_5_0</DefineConstants>
6+
</PropertyGroup>
7+
8+
<Import Project="../Common.props" />
9+
10+
<ItemGroup>
11+
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" PrivateAssets="all" />
12+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" VersionOverride="5.0.0" PrivateAssets="all" />
13+
</ItemGroup>
14+
15+
</Project>

src/Directory.Packages.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
<ItemGroup>
77
<PackageVersion Include="MarkdownSnippets.MsBuild" Version="28.0.0" />
88
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" />
9-
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.14.0" />
9+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" />
1010
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing" Version="1.1.3" />
11-
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.14.0" />
12-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.10" />
13-
<PackageVersion Include="Microsoft.NETCore.App.Ref" Version="9.0.10" />
11+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.0.0" />
12+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.2" />
13+
<PackageVersion Include="Microsoft.NETCore.App.Ref" Version="10.0.2" />
1414
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
1515
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="10.0.102" />
1616
<PackageVersion Include="TUnit" Version="1.13.11" />

src/Shared/AutoConstructSourceGenerator/Emitter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
#if ROSLYN_3
77
using EmitterContext = Microsoft.CodeAnalysis.GeneratorExecutionContext;
8-
#elif ROSLYN_4
8+
#elif ROSLYN_4 || ROSLYN_5
99
using EmitterContext = Microsoft.CodeAnalysis.SourceProductionContext;
1010
#endif
1111

src/Shared/Helpers/Extensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
#if ROSLYN_3
55
using EmitterContext = Microsoft.CodeAnalysis.GeneratorExecutionContext;
6-
#elif ROSLYN_4
6+
#elif ROSLYN_4 || ROSLYN_5
77
using EmitterContext = Microsoft.CodeAnalysis.SourceProductionContext;
88
#endif
99

src/Shared/Helpers/GeneratorUtilities.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
#if ROSLYN_3
66
using EmitterContext = Microsoft.CodeAnalysis.GeneratorExecutionContext;
7-
#elif ROSLYN_4
7+
#elif ROSLYN_4 || ROSLYN_5
88
using EmitterContext = Microsoft.CodeAnalysis.SourceProductionContext;
99
#endif
1010

0 commit comments

Comments
 (0)