add nullable context to attribute

This commit is contained in:
Adam Hathcock
2024-05-22 13:31:53 +01:00
parent 344b7257ad
commit 622f361de5
4 changed files with 13 additions and 6 deletions
@@ -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
// </auto-generated>
//----------------------------------------------------------------------------------------
{supportsNullable.IIf("#nullable enable")}
using System;
namespace Speckle.ProxyGenerator
@@ -67,6 +69,7 @@ namespace Speckle.ProxyGenerator
Internal = 1
}}
{supportsNullable.IIf("#nullable restore")}
}}"
);
}
@@ -4,5 +4,5 @@ namespace Speckle.ProxyGenerator.FileGenerators;
internal interface IFileGenerator
{
FileData GenerateFile();
FileData GenerateFile(bool supportsNullable);
}
@@ -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)
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Version>0.1.1</Version>
<Version>0.1.2</Version>
<TargetFramework>netstandard2.0</TargetFramework>
<LangVersion>Latest</LangVersion>
<Nullable>enable</Nullable>