From d36b4144ecb28bcd9745ab5dfc4f9dae8bdb8ce9 Mon Sep 17 00:00:00 2001 From: Riccardo De Agostini Date: Wed, 29 Jul 2026 02:17:29 +0200 Subject: [PATCH] Replace PolyKit.Embedded with PolySharp in the source generators project MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PolyKit is effectively unmaintained and injects far more polyfills than the only netstandard2.0 project needs; the excess internals leaked into the test project through InternalsVisibleTo, forcing an extern-alias reference. PolySharp is restricted via PolySharpIncludeGeneratedTypes to IsExternalInit alone: polyfilling System.Index (for a single str[^1]) would drag in the nullable attributes, which are precisely the types that collided with the BCL's — so that expression becomes str[str.Length - 1] and the extern alias goes away entirely. Co-Authored-By: Claude Fable 5 --- Directory.Packages.props | 2 +- .../Buildvana.Sdk.SourceGenerators.csproj | 7 ++++++- .../Internal/ConstantValueParser.cs | 2 +- .../Buildvana.Sdk.SourceGenerators.Tests.csproj | 4 +--- .../ConstantValueParserTests.cs | 4 +--- .../ThisAssemblyClassGeneratorTests.cs | 4 +--- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 7df5626..1c2a254 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -48,12 +48,12 @@ - + diff --git a/src/Buildvana.Sdk.SourceGenerators/Buildvana.Sdk.SourceGenerators.csproj b/src/Buildvana.Sdk.SourceGenerators/Buildvana.Sdk.SourceGenerators.csproj index 27d21f7..7e5e6d8 100644 --- a/src/Buildvana.Sdk.SourceGenerators/Buildvana.Sdk.SourceGenerators.csproj +++ b/src/Buildvana.Sdk.SourceGenerators/Buildvana.Sdk.SourceGenerators.csproj @@ -4,6 +4,11 @@ $(SourceGeneratorsTfm) false true + + + System.Runtime.CompilerServices.IsExternalInit @@ -18,7 +23,7 @@ - + diff --git a/src/Buildvana.Sdk.SourceGenerators/Internal/ConstantValueParser.cs b/src/Buildvana.Sdk.SourceGenerators/Internal/ConstantValueParser.cs index ef10bb5..6d4f1fe 100644 --- a/src/Buildvana.Sdk.SourceGenerators/Internal/ConstantValueParser.cs +++ b/src/Buildvana.Sdk.SourceGenerators/Internal/ConstantValueParser.cs @@ -43,7 +43,7 @@ public static bool TryParse(string? str, out object? result) return true; } - if (str!.Length > 1 && str[0] == '"' && str[^1] == '"') + if (str!.Length > 1 && str[0] == '"' && str[str.Length - 1] == '"') { result = str.Substring(1, str.Length - 2).Replace("\"\"", "\""); return true; diff --git a/tests/Buildvana.Sdk.SourceGenerators.Tests/Buildvana.Sdk.SourceGenerators.Tests.csproj b/tests/Buildvana.Sdk.SourceGenerators.Tests/Buildvana.Sdk.SourceGenerators.Tests.csproj index e1706f7..ef09e82 100644 --- a/tests/Buildvana.Sdk.SourceGenerators.Tests/Buildvana.Sdk.SourceGenerators.Tests.csproj +++ b/tests/Buildvana.Sdk.SourceGenerators.Tests/Buildvana.Sdk.SourceGenerators.Tests.csproj @@ -14,9 +14,7 @@ - - + diff --git a/tests/Buildvana.Sdk.SourceGenerators.Tests/ConstantValueParserTests.cs b/tests/Buildvana.Sdk.SourceGenerators.Tests/ConstantValueParserTests.cs index 9982c42..00a3d4a 100644 --- a/tests/Buildvana.Sdk.SourceGenerators.Tests/ConstantValueParserTests.cs +++ b/tests/Buildvana.Sdk.SourceGenerators.Tests/ConstantValueParserTests.cs @@ -1,9 +1,7 @@ // Copyright (C) Tenacom and Contributors. Licensed under the MIT license. // See the LICENSE file in the project root for full license information. -extern alias Generators; - -using Generators::Buildvana.Sdk.SourceGenerators.Internal; +using Buildvana.Sdk.SourceGenerators.Internal; internal sealed class ConstantValueParserTests { diff --git a/tests/Buildvana.Sdk.SourceGenerators.Tests/ThisAssemblyClassGeneratorTests.cs b/tests/Buildvana.Sdk.SourceGenerators.Tests/ThisAssemblyClassGeneratorTests.cs index 0003fa4..1d46c11 100644 --- a/tests/Buildvana.Sdk.SourceGenerators.Tests/ThisAssemblyClassGeneratorTests.cs +++ b/tests/Buildvana.Sdk.SourceGenerators.Tests/ThisAssemblyClassGeneratorTests.cs @@ -1,10 +1,8 @@ // Copyright (C) Tenacom and Contributors. Licensed under the MIT license. // See the LICENSE file in the project root for full license information. -extern alias Generators; - using System.Globalization; -using Generators::Buildvana.Sdk.SourceGenerators; +using Buildvana.Sdk.SourceGenerators; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp;