diff --git a/src/Language/GraphQL/Class.hs b/src/Language/GraphQL/Class.hs index 45159d1..e08ec65 100644 --- a/src/Language/GraphQL/Class.hs +++ b/src/Language/GraphQL/Class.hs @@ -322,7 +322,7 @@ deriveFromGraphQL typeName = do NewtypeD _ _ _ _ cons' _ | RecC dataConName varBangTypes <- cons' -> withRecordConstructor dataConName varBangTypes - _ -> error "Only records with a single data constructor are supported" + _ -> error "Only input objects and enums are supported if all member types have a FromGraphQL instance" where enumMemberPattern (NormalC normalName []) = let fromGraphQLF = conP (mkName "Type.Enum") [litP $ stringL $ nameBase normalName] @@ -376,7 +376,7 @@ deriveToGraphQL typeName = do NewtypeD _ _ _ _ cons' _ | RecC dataConName varBangTypes <- cons' -> withRecordConstructor dataConName varBangTypes - _ -> error "Only records with a single data constructor are supported" + _ -> error "Only objects, unions and enums are supported if all member types have a ToGraphQL instance" where conTName = conT typeName collectEnumMemberNames (NormalC normalName []) = Just normalName @@ -397,7 +397,7 @@ deriveToGraphQL typeName = do enumMemberPattern <$> enumMemberNames | Just unionMembers <- traverse collectUnionMembers cons' = unionMemberPattern <$> unionMembers - | otherwise = error "Enum member should be a normal constructor without parameters" + | otherwise = error "All data constructors should have either no parameters (Enum) or one parameter (Union)" withRecordConstructor dataConName varBangTypes = do fieldAliases <- traverse newFieldAliases varBangTypes let fBody =