packages feed

boilerplate-0.0.2: library/Boilerplate/GhcParser.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}

module Boilerplate.GhcParser (parseHaskell) where

import Control.Monad.Trans.Except (runExceptT)
import Data.Either (fromRight)
import GHC.Paths (libdir)
import HsInspect.Runner
import HsInspect.Types (Comment(..), Type(..), types)

parseHaskell :: FilePath -> IO ([Type], [Comment])
parseHaskell file = do
  let fallback = ["-B" <> libdir]
  flags <- fromRight fallback <$> (runExceptT . ghcflags_flags $ Just file)
  runGhcAndJamMasterShe flags False $ types file