liquidhaskell-boot
Safe HaskellNone
LanguageHaskell98

Liquid.GHC.API.Extra

Synopsis

Documentation

data ApiComment Source #

Abstraction of EpaComment.

Instances

Instances details
Eq ApiComment Source # 
Instance details

Defined in Liquid.GHC.API.Extra

Show ApiComment Source # 
Instance details

Defined in Liquid.GHC.API.Extra

addNoInlinePragmasToBinds :: TcGblEnv -> TcGblEnv Source #

Adds NOINLINE pragmas to all bindings in the module and sets them as exported identifiers.

This prevents the simple optimizer from inlining such bindings which might have specs that would otherwise be left dangling.

Setting the exported flag prevents both inlining and removal of dead bindings in the simple optimizer. NOINLINE is redundant with this, but it expresseses the intent more clearly. Note also that Language.Haskell.Liquid.Transform.Rewrite.inlineLoopBreaker depends at the moment on NOINLINE being inserted to tell appart bindings in the original program from generated bindings.

https://gitlab.haskell.org/ghc/ghc/-/issues/24386

apiComments :: HsParsedModule -> [Located ApiComment] Source #

Extract top-level comments from a module.

directImports :: TcGblEnv -> [Module] Source #

Extracts the direct imports of a module.

isPatErrorAlt :: CoreAlt -> Bool Source #

Tells if a case alternative calls to patError

withTimingWallClock Source #

Arguments

:: MonadIO m 
=> Logger 
-> SDoc

The name of the phase

-> (a -> ())

A function to force the result (often either const () or rnf)

-> m a

The body of the phase to be timed

-> m a 

A version of withTiming that uses wall clock time instead of CPU time.

This version is copied and modified from GHC's withTiming