diff options
author | M Farkas-Dyck <strake888@gmail.com> | 2022-03-13 16:10:21 -0800 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-09-19 09:07:05 -0400 |
commit | c1f81b38625a5fea7fb8160a3a62ae6be078a7b1 (patch) | |
tree | 7c151bc71e83e587df97265fd58c7a1b45574f8d /utils | |
parent | 7574659452a864e762fa812cb38cf15f70d85617 (diff) | |
download | haskell-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')
-rw-r--r-- | utils/check-exact/ExactPrint.hs | 10 | ||||
-rw-r--r-- | utils/check-exact/Utils.hs | 9 | ||||
m--------- | utils/haddock | 0 |
3 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 -- --------------------------------------------------------------------- diff --git a/utils/haddock b/utils/haddock -Subproject 43f478af894b5173b4f1087c6d92c41a64250be +Subproject b5e40b15228fdca5ce7d4e2f2241156d0b08526 |