summaryrefslogtreecommitdiff
path: root/compiler/GHC/Types/Hint.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/Types/Hint.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/Types/Hint.hs')
-rw-r--r--compiler/GHC/Types/Hint.hs6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/GHC/Types/Hint.hs b/compiler/GHC/Types/Hint.hs
index 7057925dea..69f98ba1da 100644
--- a/compiler/GHC/Types/Hint.hs
+++ b/compiler/GHC/Types/Hint.hs
@@ -27,11 +27,12 @@ import qualified Data.List.NonEmpty as NE
import GHC.Utils.Outputable
import qualified GHC.LanguageExtensions as LangExt
-import Data.Typeable
+import Data.Typeable (Typeable)
import GHC.Unit.Module (ModuleName, Module)
import GHC.Hs.Extension (GhcTc, GhcRn)
import GHC.Core.Coercion
import GHC.Core.FamInstEnv (FamFlavor)
+import GHC.Core.TyCon (TyCon)
import GHC.Core.Type (PredType)
import GHC.Types.Fixity (LexicalFixity(..))
import GHC.Types.Name (Name, NameSpace, OccName (occNameFS), isSymOcc, nameOccName)
@@ -453,6 +454,9 @@ data GhcHint
Name -- ^ method with non-canonical implementation
Name -- ^ possible other method to use as the RHS instead
String -- ^ Documentation URL
+ {-| Suggest eta-reducing a type synonym used in the implementation
+ of abstract data. -}
+ | SuggestEtaReduceAbsDataTySyn TyCon
-- | An 'InstantiationSuggestion' for a '.hsig' file. This is generated
-- by GHC in case of a 'DriverUnexpectedSignature' and suggests a way