From 97b200e43d6fe8df917b640dd765dc44a9e696be Mon Sep 17 00:00:00 2001 From: Sandy Maguire Date: Fri, 22 Oct 2021 18:38:44 -0400 Subject: [PATCH] Cleanup -Wall and add context to bogus type family error --- polysemy-plugin/src/Polysemy/Plugin/Fundep.hs | 16 +++++++++++++--- .../src/Polysemy/Plugin/Fundep/Unification.hs | 1 - 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/polysemy-plugin/src/Polysemy/Plugin/Fundep.hs b/polysemy-plugin/src/Polysemy/Plugin/Fundep.hs index 674b4dd..2da8064 100644 --- a/polysemy-plugin/src/Polysemy/Plugin/Fundep.hs +++ b/polysemy-plugin/src/Polysemy/Plugin/Fundep.hs @@ -60,7 +60,7 @@ import GHC.Tc.Types.Constraint import GHC.Tc.Utils.Env (tcGetInstEnvs) import GHC.Tc.Utils.TcType (tcSplitPhiTy, tcSplitTyConApp) import GHC.Tc.Solver.Monad hiding (tcLookupClass) -import GHC.Core.Class (Class, classTyCon) +import GHC.Core.Class (classTyCon) import GHC.Core.InstEnv (lookupInstEnv, is_dfun) import GHC.Core.Type import GHC.Utils.Monad (allM, anyM) @@ -70,7 +70,7 @@ import GHC.Utils.Monad (allM, anyM) import Constraint #endif -import Class (Class, classTyCon) +import Class (classTyCon) import GhcPlugins (idType, tyConClass_maybe) import Inst (tcGetInstEnvs) import InstEnv (lookupInstEnv, is_dfun) @@ -263,7 +263,17 @@ solveBogusError stuff wanteds = do (idx, [_, _, r]) <- splitTyConApp_list expr guard $ idx == locateEffectTyCon stuff guard $ elem @[] (OrdType r) $ coerce bogus - pure (error "bogus proof for stuck type family", ct) + pure (error $ unlines + [ "Bogus proof for stuck type family." + , "" + , "This means there's a type error in your program, but the fact that" + , "you're seeing this message is a bug in `polysemy-plugin`." + , "" + , "Please file a bug at https://github.com/polysemy-research/polysemy" + , "with a minimal reproduction for how you managed to get this error." + ] + , ct + ) ------------------------------------------------------------------------------ diff --git a/polysemy-plugin/src/Polysemy/Plugin/Fundep/Unification.hs b/polysemy-plugin/src/Polysemy/Plugin/Fundep/Unification.hs index f7c29f4..3ebf841 100644 --- a/polysemy-plugin/src/Polysemy/Plugin/Fundep/Unification.hs +++ b/polysemy-plugin/src/Polysemy/Plugin/Fundep/Unification.hs @@ -4,7 +4,6 @@ module Polysemy.Plugin.Fundep.Unification where import Data.Bool import Data.Function (on) -import Data.Maybe (isJust) import Data.Set (Set) import qualified Data.Set as S #if __GLASGOW_HASKELL__ >= 900