From dcd5968a5fa793aea4b2b12751db5a5856922efd Mon Sep 17 00:00:00 2001 From: Maxime Mangel Date: Tue, 7 May 2024 21:54:34 +0200 Subject: [PATCH] fix: don't generate U1 if an union is resolved as a single possible value [converter] --- src/Glutinum.Converter/Transform.fs | 3 +++ .../references/unionType/singleUnionResolved.d.ts | 1 + .../references/unionType/singleUnionResolved.fsx | 12 ++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 tests/specs/references/unionType/singleUnionResolved.d.ts create mode 100644 tests/specs/references/unionType/singleUnionResolved.fsx diff --git a/src/Glutinum.Converter/Transform.fs b/src/Glutinum.Converter/Transform.fs index 72796b3..ea80926 100644 --- a/src/Glutinum.Converter/Transform.fs +++ b/src/Glutinum.Converter/Transform.fs @@ -200,6 +200,9 @@ let rec private transformType if isOptional && others.Length = 1 then FSharpType.Option(transformType context others.Head) + // Don't wrap in a U1 if there is only one case + else if others.Length = 1 then + transformType context others.Head else { Attributes = [] diff --git a/tests/specs/references/unionType/singleUnionResolved.d.ts b/tests/specs/references/unionType/singleUnionResolved.d.ts new file mode 100644 index 0000000..3fb116e --- /dev/null +++ b/tests/specs/references/unionType/singleUnionResolved.d.ts @@ -0,0 +1 @@ +export type ColorInfo = number | false; diff --git a/tests/specs/references/unionType/singleUnionResolved.fsx b/tests/specs/references/unionType/singleUnionResolved.fsx new file mode 100644 index 0000000..fd50d1e --- /dev/null +++ b/tests/specs/references/unionType/singleUnionResolved.fsx @@ -0,0 +1,12 @@ +module rec Glutinum + +open Fable.Core +open Fable.Core.JsInterop +open System + +type ColorInfo = + float + +(***) +#r "nuget: Fable.Core" +(***)