Skip to content

Commit

Permalink
Fixed generating union factory methods for unions with a single type …
Browse files Browse the repository at this point in the history
…parameter

=> release
  • Loading branch information
hugener committed May 15, 2024
1 parent 20dbcfb commit 51de54d
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 15 deletions.
19 changes: 9 additions & 10 deletions Source/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,23 @@
<PackageVersion Include="Microsoft.CodeAnalysis.VisualBasic.CodeRefactoring.Testing.MSTest" Version="1.1.1" />
<PackageVersion Include="Microsoft.CodeAnalysis" Version="4.3.1" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageVersion Include="MSTest.TestAdapter" Version="3.2.2" />
<PackageVersion Include="MSTest.TestFramework" Version="3.2.2" />
<PackageVersion Include="MSTest.TestAdapter" Version="3.3.1" />
<PackageVersion Include="MSTest.TestFramework" Version="3.3.1" />
<PackageVersion Include="NUnit" Version="4.1.0" />
<PackageVersion Include="NUnit3TestAdapter" Version="4.5.0" />
<PackageVersion Include="PolySharp" Version="1.14.1" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.435" />
<PackageVersion Include="System.Collections.Immutable" Version="6.0.0" />
<PackageVersion Include="Sundew.Generator.Code" Version="3.1.21" />
<PackageVersion Include="Sundew.Generator.Code" Version="3.1.22" />
<PackageVersion Include="Sundew.Packaging.Publish" Version="10.0.8" />
<PackageVersion Include="Sundew.Testing.CodeAnalysis" Version="0.3.2" />
<PackageVersion Include="Sundew.Testing.CodeAnalysis" Version="0.3.3" />
<PackageVersion Include="Verify.SourceGenerators" Version="2.2.0" />
<PackageVersion Include="Verify.Xunit" Version="23.5.2" />
<PackageVersion Include="Verify" Version="23.5.2" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.7" />
<PackageVersion Include="xunit" Version="2.7.0" />
<PackageVersion Include="Verify.Xunit" Version="24.2.0" />
<PackageVersion Include="Verify" Version="24.2.0" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.0" />
<PackageVersion Include="xunit" Version="2.8.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageVersion Include="Microsoft.Bcl.Hashcode" Version="1.1.1" />
<PackageVersion Include="Microsoft.Bcl.Hashcode" Version="1.1.1" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,10 @@ public static StringBuilder TryAppendGenericQualifier(this StringBuilder stringB
}
else
{
var typeParameterCount = fullType.TypeMetadata.TypeParameters.Count;
stringBuilder
.Append('<')
.Append(',', fullType.TypeMetadata.TypeParameters.Count - 1)
.If(typeParameterCount > 0, stringBuilder => stringBuilder.Append(',', typeParameterCount - 1))
.Append('>');
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//HintName: Sundew.DiscriminatedUnions.Tester.NestedGenericUnion{TItem}.generated.cs
#nullable enable

namespace Sundew.DiscriminatedUnions.Tester
{
#pragma warning disable SA1601
[global::System.Diagnostics.DebuggerNonUserCode]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Sundew.DiscriminateUnions.Generator", "5.3.0.0")]
public partial record NestedGenericUnion<TItem>
#pragma warning restore SA1601
{
/// <summary>
/// Factory method for the Target case.
/// </summary>
/// <param name="item">The item.</param>
/// <returns>A new Target.</returns>
[Sundew.DiscriminatedUnions.CaseType(typeof(global::Sundew.DiscriminatedUnions.Tester.NestedGenericUnion.Target<>))]
public static global::Sundew.DiscriminatedUnions.Tester.NestedGenericUnion<TItem> _Target(TItem item)
=> new global::Sundew.DiscriminatedUnions.Tester.NestedGenericUnion.Target<TItem>.Target(item);

/// <summary>
/// Factory method for the TargetList case.
/// </summary>
/// <param name="item">The item.</param>
/// <returns>A new TargetList.</returns>
[Sundew.DiscriminatedUnions.CaseType(typeof(global::Sundew.DiscriminatedUnions.Tester.NestedGenericUnion.TargetList<>))]
public static global::Sundew.DiscriminatedUnions.Tester.NestedGenericUnion<TItem> _TargetList(global::System.Collections.Generic.List<TItem> item)
=> new global::Sundew.DiscriminatedUnions.Tester.NestedGenericUnion.TargetList<TItem>.TargetList(item);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,10 @@ public static StringBuilder TryAppendGenericQualifier(this StringBuilder stringB
}
else
{
var typeParameterCount = fullType.TypeMetadata.TypeParameters.Count;
stringBuilder
.Append('<')
.Append(',', fullType.TypeMetadata.TypeParameters.Count - 1)
.If(typeParameterCount > 0, stringBuilder => stringBuilder.Append(',', typeParameterCount - 1))
.Append('>');
}
}
Expand Down
11 changes: 11 additions & 0 deletions Source/Sundew.DiscriminatedUnions.Tester/NestedGenericUnion.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace Sundew.DiscriminatedUnions.Tester;

using System.Collections.Generic;

[Sundew.DiscriminatedUnions.DiscriminatedUnion]
public abstract partial record NestedGenericUnion<TItem>
{
public sealed record Target(TItem Item) : NestedGenericUnion<TItem>;

public sealed record TargetList(List<TItem> Item) : NestedGenericUnion<TItem>;
}
5 changes: 2 additions & 3 deletions Source/Sundew.DiscriminatedUnions.Tester/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

namespace Sundew.DiscriminatedUnions.Tester;

using System;
using System.Collections.Generic;
using TestData;

Expand All @@ -25,7 +24,7 @@ public static void Main(string[] args)
var expression = new AdditionExpression(new ValueExpression(5),
new SubtractionExpression(new ValueExpression(3), new ValueExpression(1)));

static int Evaluate(IExpression expression)
/*static int Evaluate(IExpression expression)
{
return expression switch
{
Expand All @@ -36,7 +35,7 @@ static int Evaluate(IExpression expression)
};
}
Console.WriteLine(Evaluate(expression));
Console.WriteLine(Evaluate(expression));*/
/*
Console.WriteLine("Hello World!");
Result? result = Compute("Error");
Expand Down

0 comments on commit 51de54d

Please sign in to comment.