@@ -956,7 +956,6 @@ class ConsToJSON enc arity f where
957class ConsToJSON' enc arity f isRecord where
957class ConsToJSON' enc arity f isRecord where
958 consToJSON' :: Options -> ToArgs enc arity a
958 consToJSON' :: Options -> ToArgs enc arity a
959− -> Bool -- ^ Are we a record with one field?
960 -> f a -> Tagged isRecord enc
959 -> f a -> Tagged isRecord enc
962instance ( IsRecord f isRecord
961instance ( IsRecord f isRecord
@@ -965,23 +964,28 @@ instance ( IsRecord f isRecord
966 consToJSON opts targs =
965 consToJSON opts targs =
967 (unTagged :: Tagged isRecord enc -> enc)
966 (unTagged :: Tagged isRecord enc -> enc)
968− . consToJSON' opts targs (isUnary (undefined :: f a))
967+ . consToJSON' opts targs
969 {-# INLINE consToJSON #-}
968 {-# INLINE consToJSON #-}
970+instance OVERLAPPING_
971−instance ( RecordToPairs enc pairs arity f
971+ ( RecordToPairs enc pairs arity (S1 s f)
972 , FromPairs enc pairs
972 , FromPairs enc pairs
973 , GToJSON enc arity f
973 , GToJSON enc arity f
974− ) => ConsToJSON' enc arity f True
974+ ) => ConsToJSON' enc arity (S1 s f) True
976− consToJSON' opts targs isUn =
976+ consToJSON' opts targs
978− case (isUn, unwrapUnaryRecords opts) of
977+ | unwrapUnaryRecords opts = Tagged . gToJSON opts targs
979− (True, True) -> gToJSON opts targs
980− _ -> fromPairs . recordToPairs opts targs
978+ | otherwise = Tagged . fromPairs . recordToPairs opts targs
981 {-# INLINE consToJSON' #-}
979 {-# INLINE consToJSON' #-}
981+instance ( RecordToPairs enc pairs arity f
982+ , FromPairs enc pairs
983+ ) => ConsToJSON' enc arity f True
985+ consToJSON' opts targs = Tagged . fromPairs . recordToPairs opts targs
983instance GToJSON enc arity f => ConsToJSON' enc arity f False where
987instance GToJSON enc arity f => ConsToJSON' enc arity f False where
984− consToJSON' opts targs _ = Tagged . gToJSON opts targs
988+ consToJSON' opts targs = Tagged . gToJSON opts targs
985 {-# INLINE consToJSON' #-}
989 {-# INLINE consToJSON' #-}
987--------------------------------------------------------------------------------
991--------------------------------------------------------------------------------