Ticket #5527: Test.hs

File Test.hs, 881 bytes (added by cdsmith, 6 years ago)

Test case

Line 
1{-# LANGUAGE MagicHash #-}
2
3import System.IO.Unsafe
4import GHC.Exts  (unsafeCoerce#)
5
6import qualified GHC      as GHC
7import qualified DynFlags as GHC
8
9compile :: IO (Maybe Int)
10compile = GHC.runGhc (Just "/home/cdsmith/ghcbuild/lib/ghc-7.3.20110906") $ do
11    dflags <- GHC.getSessionDynFlags
12    let dflags' = dflags { GHC.ghcLink = GHC.LinkInMemory }
13    GHC.setSessionDynFlags dflags'
14    target <- GHC.guessTarget "A.hs" Nothing
15    GHC.setTargets [target]
16    r <- fmap GHC.succeeded (GHC.load GHC.LoadAllTargets)
17    case r of
18        True -> do
19            mods <- GHC.getModuleGraph
20            let mainMod = GHC.ms_mod (head mods)
21            GHC.setContext [ GHC.IIModule mainMod ]
22            v <- GHC.compileExpr "a :: Integer"
23            return (Just (unsafeCoerce# v))
24        False -> return Nothing
25
26main = do
27    writeFile "A.hs" "a = 42"
28    print =<< compile