packages feed

shaker-0.1: src/Shaker/Action/Quickcheck.hs

module Shaker.Action.Quickcheck
 where

import GHC
import DynFlags 
import GHC.Paths
import Shaker.Io
import Shaker.Type
import Control.Monad.Trans 
import Control.Monad.Reader
{-
runQuickcheck :: Shaker IO String
runQuickcheck = do
        (CompileInput sourceDir targetInput procFlags strflags) <-  asks compileInput 
        (ListenerInput fli _) <- asks listenerInput 
        targetFiles <-  lift $ recurseMultipleListFiles fli
        lift $ defaultErrorHandler defaultDynFlags $ 
                       runGhc (Just libdir) $ do
                       dflags <- getSessionDynFlags
                       (newFlags,_,_) <- parseDynamicFlags dflags (map noLoc strflags)
	               _ <- setSessionDynFlags $ procFlags $ setSourceAndTarget sourceDir targetInput newFlags
                       target <- mapM (`guessTarget` Nothing) targetFiles
                       setTargets target
        	       _ <- load LoadAllTargets
                       modSum <- getModSummary $ mkModuleName "B"
                       p <- parseModule modSum
                       t <- typecheckModule p
                       d <- desugarModule t
                       l <- loadModule d
                       n <- getNamesInScope
                       c <- return $ coreModule d
                       g <- getModuleGraph
                       mapM showModule g     
                       print $ showSDoc ( ppr (parsedSource d,"/n-----/n",  typecheckedSource d)        res )
-}

example = defaultErrorHandler defaultDynFlags $ do
    runGhc (Just libdir) $ do
    dflags <- getSessionDynFlags
    (newFlags,_,_) <- parseDynamicFlags dflags (map noLoc ["-itestsuite/tests","-isrc/","-package ghc"])
    setSessionDynFlags newFlags
    target <- guessTarget "Shaker.CliTest" Nothing
    setTargets [target]
    load LoadAllTargets
    modSum <- getModSummary $ mkModuleName "Shaker.CliTest"
    p <- parseModule modSum
 --   liftIO $ putStrLn $ show p 
    t <- typecheckModule p
--    liftIO $ putStrLn $ show t 
    d <- desugarModule t
    l <- loadModule d
    n <- getNamesInScope
    c <- return $ coreModule d
    g <- getModuleGraph
    mapM showModule g     
    return $ (parsedSource d,"/n-----/n",  typecheckedSource d)

setSourceAndTarget :: [String] -> String ->DynFlags -> DynFlags
setSourceAndTarget sources target dflags = dflags{
    importPaths = sources
    ,objectDir = Just target
    ,hiDir = Just target
  }