summaryrefslogtreecommitdiff
path: root/utils/check-exact/Orphans.hs
diff options
context:
space:
mode:
Diffstat (limited to 'utils/check-exact/Orphans.hs')
-rw-r--r--utils/check-exact/Orphans.hs92
1 files changed, 92 insertions, 0 deletions
diff --git a/utils/check-exact/Orphans.hs b/utils/check-exact/Orphans.hs
new file mode 100644
index 0000000000..1403324861
--- /dev/null
+++ b/utils/check-exact/Orphans.hs
@@ -0,0 +1,92 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# LANGUAGE FlexibleInstances #-}
+
+module Orphans where
+
+-- import Data.Default
+import GHC hiding (EpaComment)
+
+-- ---------------------------------------------------------------------
+
+class Default a where
+ def :: a
+
+-- ---------------------------------------------------------------------
+-- Orphan Default instances. See https://gitlab.haskell.org/ghc/ghc/-/issues/20372
+
+instance Default [a] where
+ def = []
+
+instance Default NameAnn where
+ def = mempty
+
+instance Default AnnList where
+ def = mempty
+
+instance Default AnnListItem where
+ def = mempty
+
+instance Default AnnPragma where
+ def = AnnPragma def def def
+
+instance Semigroup EpAnnImportDecl where
+ (<>) = error "unimplemented"
+instance Default EpAnnImportDecl where
+ def = EpAnnImportDecl def Nothing Nothing Nothing Nothing Nothing
+
+instance Default HsRuleAnn where
+ def = HsRuleAnn Nothing Nothing def
+
+instance Default AnnSig where
+ def = AnnSig def def
+
+instance Default GrhsAnn where
+ def = GrhsAnn Nothing def
+
+instance Default EpAnnUnboundVar where
+ def = EpAnnUnboundVar def def
+
+instance (Default a, Default b) => Default (a, b) where
+ def = (def, def)
+
+instance Default NoEpAnns where
+ def = NoEpAnns
+
+instance Default AnnParen where
+ def = AnnParen AnnParens def def
+
+instance Default AnnExplicitSum where
+ def = AnnExplicitSum def def def def
+
+instance Default EpAnnHsCase where
+ def = EpAnnHsCase def def def
+
+instance Default AnnsIf where
+ def = AnnsIf def def def def def
+
+instance Default (Maybe a) where
+ def = Nothing
+
+instance Default AnnProjection where
+ def = AnnProjection def def
+
+instance Default AnnFieldLabel where
+ def = AnnFieldLabel Nothing
+
+instance Default EpaLocation where
+ def = EpaDelta (SameLine 0) []
+
+instance Default AddEpAnn where
+ def = AddEpAnn def def
+
+instance Default AnnKeywordId where
+ def = Annlarrowtail {- gotta pick one -}
+
+instance Default AnnContext where
+ def = AnnContext Nothing [] []
+
+instance Default EpAnnSumPat where
+ def = EpAnnSumPat def def def
+
+instance Default AnnsModule where
+ def = AnnsModule [] mempty