From 59ba6e2af54704a902eb88bf983845c257815f22 Mon Sep 17 00:00:00 2001 From: VegOwOtenks Date: Fri, 22 Aug 2025 11:29:50 +0200 Subject: [PATCH] fix[Type]: Empty Unions are disallowed --- src/Language/Json/Type.hs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Language/Json/Type.hs b/src/Language/Json/Type.hs index 8e6c2e9..8205b6c 100644 --- a/src/Language/Json/Type.hs +++ b/src/Language/Json/Type.hs @@ -24,7 +24,7 @@ import qualified Data.Array.IArray as Array import qualified Data.List as List import Control.Arrow ((>>>)) import GHC.Records (HasField (getField)) -import Test.QuickCheck (Gen, Arbitrary (arbitrary), UnicodeString (getUnicodeString)) +import Test.QuickCheck (Gen, Arbitrary (arbitrary), UnicodeString (getUnicodeString), NonEmptyList (getNonEmpty)) import qualified Data.Text as Text import qualified Data.Array.Arbitrary as ArbitraryArray import qualified Data.Traversable as Traversable @@ -48,6 +48,7 @@ pattern Union set <- Union' set where Union set = let merged = mergeUnionObjects set in case Set.toList merged of + [] -> Null [t] -> t _ -> Union' merged @@ -82,8 +83,8 @@ instance Arbitrary Type where , pure Number , pure String , pure Boolean - , Array <$> arbitrary - , Union <$> Gen.scale (`div` 2) arbitrary + , Array <$> Gen.scale (`div` 2) arbitrary + , Union . Set.fromList . getNonEmpty <$> Gen.scale (`div` 2) arbitrary , Object . Map.mapKeys (Text.pack . getUnicodeString) <$> Gen.scale (`div` 2) arbitrary ]