summaryrefslogtreecommitdiff
path: root/compiler/GHC/Iface/Syntax.hs
diff options
context:
space:
mode:
authorsheaf <sam.derbyshire@gmail.com>2023-05-15 15:23:49 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-15 18:03:00 -0400
commit4d29ecdfcc79ad663e066d9f7d6d17b64c8c6c41 (patch)
tree985890c63aee54a2e94e31aa85cbec44652987b9 /compiler/GHC/Iface/Syntax.hs
parentd69cbd78999071d2d6479be40ae90ddd83b9942a (diff)
downloadhaskell-4d29ecdfcc79ad663e066d9f7d6d17b64c8c6c41.tar.gz
Migrate errors to diagnostics in GHC.Tc.Module
This commit migrates the errors in GHC.Tc.Module to use the new diagnostic infrastructure. It required a significant overhaul of the compatibility checks between an hs-boot or signature module and its implementation; we now use a Writer monad to accumulate errors; see the BootMismatch datatype in GHC.Tc.Errors.Types, with its panoply of subtypes. For the sake of readability, several local functions inside the 'checkBootTyCon' function were split off into top-level functions. We split off GHC.Types.HscSource into a "boot or sig" vs "normal hs file" datatype, as this mirrors the logic in several other places where we want to treat hs-boot and hsig files in a similar fashion. This commit also refactors the Backpack checks for type synonyms implementing abstract data, to correctly reject implementations that contain qualified or quantified types (this fixes #23342 and #23344).
Diffstat (limited to 'compiler/GHC/Iface/Syntax.hs')
-rw-r--r--compiler/GHC/Iface/Syntax.hs26
1 files changed, 0 insertions, 26 deletions
diff --git a/compiler/GHC/Iface/Syntax.hs b/compiler/GHC/Iface/Syntax.hs
index 71b87cb19c..84603e9399 100644
--- a/compiler/GHC/Iface/Syntax.hs
+++ b/compiler/GHC/Iface/Syntax.hs
@@ -748,27 +748,6 @@ filtering of method signatures. Instead we just check if anything at all is
filtered and hide it in that case.
-}
-data ShowSub
- = ShowSub
- { ss_how_much :: ShowHowMuch
- , ss_forall :: ShowForAllFlag }
-
--- See Note [Printing IfaceDecl binders]
--- The alternative pretty printer referred to in the note.
-newtype AltPpr = AltPpr (Maybe (OccName -> SDoc))
-
-data ShowHowMuch
- = ShowHeader AltPpr -- ^Header information only, not rhs
- | ShowSome [OccName] AltPpr
- -- ^ Show only some sub-components. Specifically,
- --
- -- [@\[\]@] Print all sub-components.
- -- [@(n:ns)@] Print sub-component @n@ with @ShowSub = ns@;
- -- elide other sub-components to @...@
- -- May 14: the list is max 1 element long at the moment
- | ShowIface
- -- ^Everything including GHC-internal information (used in --show-iface)
-
{-
Note [Printing IfaceDecl binders]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -782,11 +761,6 @@ When printing an interface file (--show-iface), we want to print
everything unqualified, so we can just print the OccName directly.
-}
-instance Outputable ShowHowMuch where
- ppr (ShowHeader _) = text "ShowHeader"
- ppr ShowIface = text "ShowIface"
- ppr (ShowSome occs _) = text "ShowSome" <+> ppr occs
-
showToHeader :: ShowSub
showToHeader = ShowSub { ss_how_much = ShowHeader $ AltPpr Nothing
, ss_forall = ShowForAllWhen }