summaryrefslogtreecommitdiff
path: root/utils/check-exact
diff options
context:
space:
mode:
authorM Farkas-Dyck <strake888@gmail.com>2022-03-13 16:10:21 -0800
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-09-19 09:07:05 -0400
commitc1f81b38625a5fea7fb8160a3a62ae6be078a7b1 (patch)
tree7c151bc71e83e587df97265fd58c7a1b45574f8d /utils/check-exact
parent7574659452a864e762fa812cb38cf15f70d85617 (diff)
downloadhaskell-c1f81b38625a5fea7fb8160a3a62ae6be078a7b1.tar.gz
Scrub partiality about `NewOrData`.
Rather than a list of constructors and a `NewOrData` flag, we define `data DataDefnCons a = NewTypeCon a | DataTypeCons [a]`, which enforces a newtype to have exactly one constructor. Closes #22070. Bump haddock submodule.
Diffstat (limited to 'utils/check-exact')
-rw-r--r--utils/check-exact/ExactPrint.hs10
-rw-r--r--utils/check-exact/Utils.hs9
2 files changed, 10 insertions, 9 deletions
diff --git a/utils/check-exact/ExactPrint.hs b/utils/check-exact/ExactPrint.hs
index 8ec3adbf46..277fcfcd3a 100644
--- a/utils/check-exact/ExactPrint.hs
+++ b/utils/check-exact/ExactPrint.hs
@@ -2742,14 +2742,14 @@ exactDataDefn :: EpAnn [AddEpAnn]
-> HsDataDefn GhcPs
-> EPP ()
exactDataDefn an exactHdr
- (HsDataDefn { dd_ND = new_or_data, dd_ctxt = context
+ (HsDataDefn { dd_ctxt = context
, dd_cType = mb_ct
, dd_kindSig = mb_sig
, dd_cons = condecls, dd_derivs = derivings }) = do
annotationsToComments (epAnnAnns an) [AnnOpenP, AnnCloseP]
- if new_or_data == DataType
- then markEpAnn an AnnData
- else markEpAnn an AnnNewtype
+ markEpAnn an $ case condecls of
+ DataTypeCons _ -> AnnData
+ NewTypeCon _ -> AnnNewtype
markEpAnn an AnnInstance -- optional
mapM_ markAnnotated mb_ct
exactHdr context
@@ -2760,7 +2760,7 @@ exactDataDefn an exactHdr
markAnnotated kind
when (isGadt condecls) $ markEpAnn an AnnWhere
markEpAnn an AnnOpenC
- exact_condecls an condecls
+ exact_condecls an (toList condecls)
markEpAnn an AnnCloseC
mapM_ markAnnotated derivings
return ()
diff --git a/utils/check-exact/Utils.hs b/utils/check-exact/Utils.hs
index 3f16407175..7b31ffd630 100644
--- a/utils/check-exact/Utils.hs
+++ b/utils/check-exact/Utils.hs
@@ -1,4 +1,5 @@
{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
@@ -212,10 +213,10 @@ isListComp = isDoComprehensionContext
-- ---------------------------------------------------------------------
-isGadt :: [LConDecl (GhcPass p)] -> Bool
-isGadt [] = False
-isGadt ((L _ (ConDeclGADT{})):_) = True
-isGadt _ = False
+isGadt :: Foldable f => f (LConDecl (GhcPass p)) -> Bool
+isGadt = any $ \ case
+ L _ ConDeclGADT {} -> True
+ _ -> False
-- ---------------------------------------------------------------------