Tag single constructors when appropriate

This commit is contained in:
iko 2023-02-06 16:47:39 +03:00
parent 3221dd18a9
commit 8fe50f37c8
Signed by untrusted user: iko
GPG Key ID: 82C257048D1026F2

View File

@ -30,7 +30,7 @@ import Elm.TyRep
import Control.Applicative
import Control.Monad
import Data.Aeson.TH (SumEncoding (..), deriveJSON)
import Data.Aeson.TH (SumEncoding (..), deriveJSON, tagSingleConstructors)
import qualified Data.Aeson.TH as A
import Data.Char (toLower)
import Language.Haskell.TH
@ -187,7 +187,7 @@ deriveElmDef opts name =
DataD _ _ tyVars _ constrs _ ->
case constrs of
[] -> fail "Can not derive empty data decls"
[RecC _ conFields] -> deriveAlias False opts name tyVars conFields
[RecC _ conFields] | not (tagSingleConstructors opts) -> deriveAlias False opts name tyVars conFields
_ -> deriveSum opts name tyVars constrs
NewtypeD [] _ [] Nothing (NormalC _ [(Bang NoSourceUnpackedness NoSourceStrictness, otherTy)]) [] ->
deriveSynonym opts name [] otherTy