Update examples
This commit is contained in:
3
testsuite/make/odir/Makefile
Normal file
3
testsuite/make/odir/Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
TEST= make/odir
|
||||
TOP=../../..
|
||||
include ../../build.mk
|
7
testsuite/make/odir/Plugin.hs
Normal file
7
testsuite/make/odir/Plugin.hs
Normal file
@ -0,0 +1,7 @@
|
||||
module Plugin ( resource ) where
|
||||
|
||||
import API
|
||||
|
||||
resource = plugin {
|
||||
field = "hello out there"
|
||||
}
|
8
testsuite/make/odir/api/API.hs
Normal file
8
testsuite/make/odir/api/API.hs
Normal file
@ -0,0 +1,8 @@
|
||||
module API where
|
||||
|
||||
data Interface = Interface {
|
||||
field :: String
|
||||
}
|
||||
|
||||
plugin :: Interface
|
||||
plugin = Interface { field = undefined }
|
21
testsuite/make/odir/prog/Main.hs
Normal file
21
testsuite/make/odir/prog/Main.hs
Normal file
@ -0,0 +1,21 @@
|
||||
import System.Plugins
|
||||
import API
|
||||
import System.Directory
|
||||
|
||||
main = do
|
||||
#if __GLASGOW_HASKELL__ >= 604
|
||||
tmpDir <- getTemporaryDirectory
|
||||
#else
|
||||
let tmpDir = "/tmp"
|
||||
#endif
|
||||
status <- make "../Plugin.hs" [ "-i../api", "-odir", tmpDir ]
|
||||
o <- case status of
|
||||
MakeSuccess _ o -> return o
|
||||
MakeFailure e -> mapM_ putStrLn e >> error "didn't compile"
|
||||
m_v <- load o ["../api"] [] "resource"
|
||||
v <- case m_v of
|
||||
LoadSuccess _ v -> return v
|
||||
_ -> error "load failed"
|
||||
putStrLn $ field v
|
||||
mapM_ removeFile [(tmpDir ++ "/Plugin.hi"), (tmpDir ++ "/Plugin.o") ]
|
||||
|
1
testsuite/make/odir/prog/expected
Normal file
1
testsuite/make/odir/prog/expected
Normal file
@ -0,0 +1 @@
|
||||
hello out there
|
Reference in New Issue
Block a user