Skip to content

Commit

Permalink
Add more explicit import lists to Liquid.GHC.API
Browse files Browse the repository at this point in the history
  • Loading branch information
facundominguez committed Sep 20, 2023
1 parent 7a592a6 commit f91d2ce
Show file tree
Hide file tree
Showing 6 changed files with 154 additions and 12 deletions.
154 changes: 149 additions & 5 deletions liquidhaskell-boot/src-ghc/Liquid/GHC/API.hs
Original file line number Diff line number Diff line change
Expand Up @@ -40,30 +40,174 @@ import GHC.Core.Coercion as Ghc
import GHC.Core.Coercion.Axiom as Ghc
import GHC.Core.ConLike as Ghc
import GHC.Core.DataCon as Ghc
import GHC.Core.FamInstEnv as Ghc hiding (pprFamInst)
( FieldLabel(flSelector)
, classDataCon
, dataConExTyCoVars
, dataConFullSig
, dataConImplicitTyThings
, dataConInstArgTys
, dataConName
, dataConOrigArgTys
, dataConRepArgTys
, dataConRepType
, dataConRepStrictness
, dataConTheta
, dataConUnivTyVars
, dataConWorkId
, dataConWrapId
, dataConWrapId_maybe
, isTupleDataCon
)
import GHC.Core.FamInstEnv as Ghc
( FamFlavor(DataFamilyInst)
, FamInst(FamInst, fi_flavor)
, FamInstEnv
, FamInstEnvs
, emptyFamInstEnv
, famInstEnvElts
, topNormaliseType_maybe
)
import GHC.Core.InstEnv as Ghc
import GHC.Core.Lint as Ghc hiding (dumpIfSet)
( ClsInst(is_cls, is_dfun, is_dfun_name, is_tys)
, DFunId
, instEnvElts
, instanceSig
)
import GHC.Core.Make as Ghc
( mkCoreApps
, mkCoreConApps
, mkCoreLams
, mkCoreLets
, pAT_ERROR_ID
)
import GHC.Core.Opt.Monad as Ghc (CoreToDo(..))
import GHC.Core.Opt.WorkWrap.Utils as Ghc
import GHC.Core.Predicate as Ghc (getClassPredTys_maybe, getClassPredTys, isEvVarType, isEqPrimPred, isEqPred, isClassPred, isDictId, mkClassPred)
import GHC.Core.Subst as Ghc (deShadowBinds, emptySubst, extendCvSubst)
import GHC.Core.TyCo.Rep as Ghc
( AnonArgFlag(VisArg)
, ArgFlag(Required)
, Coercion
( AppCo
, AxiomRuleCo
, AxiomInstCo
, CoVarCo
, ForAllCo
, FunCo
, InstCo
, KindCo
, LRCo
, NthCo
, SubCo
, SymCo
, TransCo
, TyConAppCo
, UnivCo
)
, TyLit(CharTyLit, NumTyLit, StrTyLit)
, Type
( AppTy
, CastTy
, CoercionTy
, ForAllTy
, FunTy
, LitTy
, TyConApp
, TyVarTy
, ft_arg
, ft_res
)
, UnivCoProvenance(PhantomProv, ProofIrrelProv)
, binderVar
, mkForAllTys
, mkFunTy
, mkTyVarTy
, mkTyVarTys
)
import GHC.Core.TyCon as Ghc
import GHC.Core.Type as Ghc hiding (typeKind , isPredTy, extendCvSubst, linear)
( TyConBinder
, TyConBndrVis(AnonTCB)
, isAlgTyCon
, isBoxedTupleTyCon
, isFamInstTyCon
, isGadtSyntaxTyCon
, isPromotedDataCon
, isTupleTyCon
, isVanillaAlgTyCon
, mkKindTyCon
, newTyConRhs
, tyConBinders
, tyConDataCons_maybe
, tyConFamInst_maybe
, tyConName
, tyConSingleDataCon_maybe
)
import GHC.Core.Type as Ghc
( Specificity(SpecifiedSpec)
, TyVarBinder
, pattern Many
, classifiesTypeWithValues
, dropForAlls
, emptyTvSubstEnv
, eqType
, expandTypeSynonyms
, irrelevantMult
, isFunTy
, isTyVar
, isTyVarTy
, mkTvSubstPrs
, mkTyConApp
, newTyConInstRhs
, nonDetCmpType
, piResultTys
, splitAppTys
, splitFunTy_maybe
, splitFunTys
, splitTyConApp
, splitTyConApp_maybe
, substTy
, substTyWith
, tyConAppArgs_maybe
, tyConAppTyCon_maybe
, tyVarKind
, varType
)
import GHC.Core.Unify as Ghc
( ruleMatchTyKiX, tcUnifyTy )
import GHC.Core.Utils as Ghc (exprType)
import GHC.Data.Bag as Ghc
( Bag, bagToList )
import GHC.Data.FastString as Ghc
import GHC.Data.Graph.Directed as Ghc
( FastString
, bytesFS
, concatFS
, fsLit
, mkFastString
, mkFastStringByteString
, sLit
, uniq
, unpackFS
)
import GHC.Data.Pair as Ghc
( Pair(Pair) )
import GHC.Driver.Main as Ghc
( hscDesugar
, hscTcRcLookupName
)
import GHC.Driver.Phases as Ghc (Phase(StopLn))
import GHC.Driver.Pipeline as Ghc (compileFile)
import GHC.Driver.Session as Ghc
( WarnReason(NoReason)
, defaultDynFlags
, getDynFlags
, gopt_set
, updOptLevel
, xopt_set
)
import GHC.Driver.Monad as Ghc (withSession)
import GHC.HsToCore.Monad as Ghc
( DsM, initDsTc, initDsWithModGuts, newUnique )
import GHC.Iface.Syntax as Ghc
( IfaceAnnotation(ifAnnotatedValue) )
import GHC.Plugins as Ghc ( deserializeWithData
, fromSerialized
, toSerialized
Expand Down
3 changes: 0 additions & 3 deletions liquidhaskell-boot/src/Language/Haskell/Liquid/GHC/Misc.hs
Original file line number Diff line number Diff line change
Expand Up @@ -731,9 +731,6 @@ gHC_VERSION = show (__GLASGOW_HASKELL__ :: Int)
symbolFastString :: Symbol -> FastString
symbolFastString = mkFastStringByteString . T.encodeUtf8 . symbolText

lintCoreBindings :: [Var] -> CoreProgram -> (Bag SDoc, Bag SDoc)
lintCoreBindings = Ghc.lintCoreBindings (defaultDynFlags undefined (undefined ("LlvmTargets" :: String))) CoreDoNothing

synTyConRhs_maybe :: TyCon -> Maybe Type
synTyConRhs_maybe = Ghc.synTyConRhs_maybe

Expand Down
2 changes: 1 addition & 1 deletion liquidhaskell-boot/src/Language/Haskell/Liquid/GHC/Play.hs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import qualified Data.HashMap.Strict as M
import qualified Data.List as L
import qualified Data.Maybe as Mb

import Liquid.GHC.API as Ghc hiding (substTysWith, panic,showPpr)
import Liquid.GHC.API as Ghc hiding (panic, showPpr)
import Language.Haskell.Liquid.GHC.Misc ()
import Language.Haskell.Liquid.Types.Errors
import Language.Haskell.Liquid.Types.Variance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ loadDependencies currentModuleConfig thisModule mods = do
hscEnv <- env_top <$> getEnv
results <- SpecFinder.findRelevantSpecs
(excludeAutomaticAssumptionsFor currentModuleConfig) hscEnv mods
deps <- foldlM processResult mempty (reverse results)
deps <- foldM processResult mempty (reverse results)
redundant <- liftIO $ configToRedundantDependencies hscEnv currentModuleConfig

debugLog $ "Redundant dependencies ==> " ++ show redundant
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import Data.IORef
import Data.Maybe

import Control.Exception
import Control.Monad ( foldM )
import Control.Monad.Trans ( lift )
import Control.Monad.Trans.Maybe

Expand Down Expand Up @@ -64,7 +65,7 @@ findRelevantSpecs :: [String] -- ^ Package to exclude for loading LHAssumptions
-> TcM [SpecFinderResult]
findRelevantSpecs lhAssmPkgExcludes hscEnv mods = do
eps <- liftIO $ readIORef (hsc_EPS hscEnv)
foldlM (loadRelevantSpec eps) mempty mods
foldM (loadRelevantSpec eps) mempty mods
where

loadRelevantSpec :: ExternalPackageState -> [SpecFinderResult] -> Module -> TcM [SpecFinderResult]
Expand Down
2 changes: 1 addition & 1 deletion liquidhaskell-boot/src/Language/Haskell/Liquid/Liquid.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import Language.Haskell.Liquid.Constraint.Types
import Language.Haskell.Liquid.UX.Annotate (mkOutput)
import qualified Language.Haskell.Liquid.Termination.Structural as ST
import qualified Language.Haskell.Liquid.GHC.Misc as GM
import Liquid.GHC.API as GHC hiding (text, vcat, ($+$), getOpts, (<+>))
import Liquid.GHC.API as GHC hiding (text, vcat, ($+$), (<+>))

--------------------------------------------------------------------------------
checkTargetInfo :: TargetInfo -> IO (Output Doc)
Expand Down

0 comments on commit f91d2ce

Please sign in to comment.