polysemy-plugin: compatibility with ghc 9.8 (#483)

This commit is contained in:
Daniel Firth 2023-10-13 19:20:30 +00:00 committed by GitHub
parent 78925a6405
commit ab8c12e96b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -143,7 +143,11 @@ instance Outputable FindConstraint where
-- | Given a list of constraints, filter out the 'FindConstraint's.
getFindConstraints :: PolysemyStuff 'Things -> [Ct] -> [FindConstraint]
getFindConstraints (findClass -> cls) cts = do
#if MIN_VERSION_GLASGOW_HASKELL(9,8,0,0)
cd@(CDictCan(DictCt{di_cls = cls', di_tys = [eff, r]})) <- cts
#else
cd@CDictCan{cc_class = cls', cc_tyargs = [eff, r]} <- cts
#endif
guard $ cls == cls'
pure $ FindConstraint
{ fcLoc = ctLoc cd
@ -157,7 +161,11 @@ getFindConstraints (findClass -> cls) cts = do
-- | Get evidence in scope that aren't the 'FindConstraint's.
getExtraEvidence :: PolysemyStuff 'Things -> [Ct] -> [PredType]
getExtraEvidence things cts = do
#if MIN_VERSION_GLASGOW_HASKELL(9,8,0,0)
CDictCan(DictCt{di_cls = cls, di_tys = as}) <- cts
#else
CDictCan{cc_class = cls, cc_tyargs = as} <- cts
#endif
guard $ cls /= findClass things
pure $ mkAppTys (mkTyConTy $ classTyCon cls) as