From 622f361de5925dd088f73e00fe27872f693f17a4 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Wed, 22 May 2024 13:31:53 +0100 Subject: [PATCH] add nullable context to attribute --- .../FileGenerators/ExtraFilesGenerator.cs | 5 ++++- .../FileGenerators/IFileGenerator.cs | 2 +- .../ProxyInterfaceCodeGenerator.cs | 10 +++++++--- .../Speckle.ProxyGenerator.csproj | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Speckle.ProxyGenerator/FileGenerators/ExtraFilesGenerator.cs b/src/Speckle.ProxyGenerator/FileGenerators/ExtraFilesGenerator.cs index 0c5f2c1..3f0b8ab 100644 --- a/src/Speckle.ProxyGenerator/FileGenerators/ExtraFilesGenerator.cs +++ b/src/Speckle.ProxyGenerator/FileGenerators/ExtraFilesGenerator.cs @@ -1,3 +1,4 @@ +using Speckle.ProxyGenerator.Extensions; using Speckle.ProxyGenerator.Models; namespace Speckle.ProxyGenerator.FileGenerators; @@ -6,7 +7,7 @@ internal class ExtraFilesGenerator : IFileGenerator { private const string Name = "Speckle.ProxyGenerator.Extra.g.cs"; - public FileData GenerateFile() + public FileData GenerateFile(bool supportsNullable) { return new FileData( $"{Name}", @@ -19,6 +20,7 @@ internal class ExtraFilesGenerator : IFileGenerator // //---------------------------------------------------------------------------------------- +{supportsNullable.IIf("#nullable enable")} using System; namespace Speckle.ProxyGenerator @@ -67,6 +69,7 @@ namespace Speckle.ProxyGenerator Internal = 1 }} +{supportsNullable.IIf("#nullable restore")} }}" ); } diff --git a/src/Speckle.ProxyGenerator/FileGenerators/IFileGenerator.cs b/src/Speckle.ProxyGenerator/FileGenerators/IFileGenerator.cs index 0ccabd1..72e6eca 100644 --- a/src/Speckle.ProxyGenerator/FileGenerators/IFileGenerator.cs +++ b/src/Speckle.ProxyGenerator/FileGenerators/IFileGenerator.cs @@ -4,5 +4,5 @@ namespace Speckle.ProxyGenerator.FileGenerators; internal interface IFileGenerator { - FileData GenerateFile(); + FileData GenerateFile(bool supportsNullable); } diff --git a/src/Speckle.ProxyGenerator/ProxyInterfaceCodeGenerator.cs b/src/Speckle.ProxyGenerator/ProxyInterfaceCodeGenerator.cs index 66004c8..724d9eb 100644 --- a/src/Speckle.ProxyGenerator/ProxyInterfaceCodeGenerator.cs +++ b/src/Speckle.ProxyGenerator/ProxyInterfaceCodeGenerator.cs @@ -48,7 +48,7 @@ class ProxyInterfaceCodeGenerator : ISourceGenerator // https://github.com/reactiveui/refit/blob/main/InterfaceStubGenerator.Core/InterfaceStubGenerator.cs var supportsNullable = csharpParseOptions.LanguageVersion >= LanguageVersion.CSharp8; - GenerateProxyAttribute(context, receiver); + GenerateProxyAttribute(context, receiver, supportsNullable); GeneratePartialInterfaces(context, receiver, supportsNullable); GenerateProxyClasses(context, receiver, supportsNullable); } @@ -65,7 +65,11 @@ class ProxyInterfaceCodeGenerator : ISourceGenerator context.AddSource("Error.g", SourceText.From(message, Encoding.UTF8)); } - private void GenerateProxyAttribute(GeneratorExecutionContext ctx, ProxySyntaxReceiver receiver) + private void GenerateProxyAttribute( + GeneratorExecutionContext ctx, + ProxySyntaxReceiver receiver, + bool supportsNullable + ) { var context = new Context { @@ -73,7 +77,7 @@ class ProxyInterfaceCodeGenerator : ISourceGenerator Candidates = receiver.CandidateInterfaces }; - var attributeData = _proxyAttributeGenerator.GenerateFile(); + var attributeData = _proxyAttributeGenerator.GenerateFile(supportsNullable); context.GeneratorExecutionContext.AddSource( attributeData.FileName, SourceText.From(attributeData.Text, Encoding.UTF8) diff --git a/src/Speckle.ProxyGenerator/Speckle.ProxyGenerator.csproj b/src/Speckle.ProxyGenerator/Speckle.ProxyGenerator.csproj index d5d5247..aafcecb 100644 --- a/src/Speckle.ProxyGenerator/Speckle.ProxyGenerator.csproj +++ b/src/Speckle.ProxyGenerator/Speckle.ProxyGenerator.csproj @@ -1,7 +1,7 @@ - 0.1.1 + 0.1.2 netstandard2.0 Latest enable