Safe Haskell | None |
---|---|
Language | Haskell98 |
Language.Haskell.Liquid.Bare.Expand
Description
This module has the code for applying refinement (and) type aliases
and the pipeline for "cooking" a BareType
into a SpecType
.
TODO: _only_ export makeRTEnv
, cookSpecType
and maybe qualifyExpand
...
Synopsis
- makeRTEnv :: Env -> ModName -> BareSpec -> [(ModName, BareSpec)] -> LogicMap -> BareRTEnv
- class Expand a where
- cookSpecType :: Env -> SigEnv -> ModName -> PlugTV Var -> LocBareType -> LocSpecType
- cookSpecTypeE :: Env -> SigEnv -> ModName -> PlugTV Var -> LocBareType -> Lookup LocSpecType
- specExpandType :: BareRTEnv -> LocSpecType -> LocSpecType
- plugHoles :: Bool -> SigEnv -> ModName -> PlugTV Var -> LocSpecType -> LocSpecType
Create alias expansion environment
Expand
Using the BareRTEnv
to do alias-expansion
Instances
Converting BareType to SpecType
cookSpecType :: Env -> SigEnv -> ModName -> PlugTV Var -> LocBareType -> LocSpecType Source #
cookSpecType
is the central place where a BareType
gets processed,
in multiple steps, into a SpecType
. See [NOTE:Cooking-SpecType] for
details of each of the individual steps.
cookSpecTypeE :: Env -> SigEnv -> ModName -> PlugTV Var -> LocBareType -> Lookup LocSpecType Source #
specExpandType :: BareRTEnv -> LocSpecType -> LocSpecType Source #
Re-exported for data-constructors
plugHoles :: Bool -> SigEnv -> ModName -> PlugTV Var -> LocSpecType -> LocSpecType Source #