Update examples
This commit is contained in:
3
testsuite/pdynload/spj3/Makefile
Normal file
3
testsuite/pdynload/spj3/Makefile
Normal file
@ -0,0 +1,3 @@
|
||||
TEST= pdynload/spj3
|
||||
TOP=../../..
|
||||
include ../../build.mk
|
5
testsuite/pdynload/spj3/Plugin.hs
Normal file
5
testsuite/pdynload/spj3/Plugin.hs
Normal file
@ -0,0 +1,5 @@
|
||||
module Plugin where
|
||||
|
||||
import API
|
||||
|
||||
resource = plugin { function = (+) :: Int -> Int -> Int }
|
9
testsuite/pdynload/spj3/api/API.hs
Normal file
9
testsuite/pdynload/spj3/api/API.hs
Normal file
@ -0,0 +1,9 @@
|
||||
module API where
|
||||
|
||||
data Interface = Interface {
|
||||
function :: (Num a) => a -> a -> a
|
||||
}
|
||||
|
||||
plugin :: Interface
|
||||
plugin = Interface { function = error "no function defined" }
|
||||
|
18
testsuite/pdynload/spj3/prog/Main.hs
Normal file
18
testsuite/pdynload/spj3/prog/Main.hs
Normal file
@ -0,0 +1,18 @@
|
||||
|
||||
import System.Plugins
|
||||
import API
|
||||
|
||||
src = "../Plugin.hs"
|
||||
wrap = "../Wrapper.hs"
|
||||
apipath = "../api"
|
||||
|
||||
main = do status <- make src ["-i"++apipath]
|
||||
case status of
|
||||
MakeSuccess _ _ -> f
|
||||
MakeFailure e -> mapM_ putStrLn e
|
||||
|
||||
where f = do v <- pdynload "../Plugin.o" ["../api"] [] "API.Interface" "resource"
|
||||
case v of
|
||||
LoadSuccess _ a -> let fn = function a in putStrLn $ show $ 1 `fn` 2
|
||||
_ -> putStrLn "wrong types"
|
||||
|
8
testsuite/pdynload/spj3/prog/expected
Normal file
8
testsuite/pdynload/spj3/prog/expected
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
../Plugin.hs:5:
|
||||
Cannot unify the type-signature variable `a' with the type `Int'
|
||||
Expected type: a -> a -> a
|
||||
Inferred type: Int -> Int -> Int
|
||||
When checking the type signature of the expression:
|
||||
(+) :: Int -> Int -> Int
|
||||
In the `function' field of a record
|
9
testsuite/pdynload/spj3/prog/expected.604
Normal file
9
testsuite/pdynload/spj3/prog/expected.604
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
../Plugin.hs:5:31:
|
||||
Couldn't match the rigid variable `a' against `Int'
|
||||
`a' is bound by the polymorphic type `forall a. (Num a) => a -> a -> a'
|
||||
at ../Plugin.hs:5:11-56
|
||||
Expected type: a -> a -> a
|
||||
Inferred type: Int -> Int -> Int
|
||||
In the expression: (+) :: Int -> Int -> Int
|
||||
In the `function' field of a record
|
9
testsuite/pdynload/spj3/prog/expected.605
Normal file
9
testsuite/pdynload/spj3/prog/expected.605
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
../Plugin.hs:5:31:
|
||||
Couldn't match the rigid variable `a' against `Int'
|
||||
`a' is bound by the polymorphic type `forall a. (Num a) => a -> a -> a'
|
||||
at ../Plugin.hs:5:11-56
|
||||
Expected type: a -> a -> a
|
||||
Inferred type: Int -> Int -> Int
|
||||
In the expression: (+) :: Int -> Int -> Int
|
||||
In the `function' field of a record
|
Reference in New Issue
Block a user