cabal: bump data-default dependency to 0.5.0.
[hs-java.git] / TestGen.hs
index c8cd0ef3c91578696e3db0355efc384f76225343..9d1bcd8caa43ae249056e1978970aee27106c8eb 100644 (file)
@@ -1,23 +1,25 @@
-{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE OverloadedStrings, FlexibleContexts #-}
 
+import Control.Monad.Exception
 import qualified Data.ByteString.Lazy as B
 
 import JVM.ClassFile
 import JVM.Converter
 import JVM.Assembler
 import JVM.Builder
+import JVM.Exceptions
 import Java.ClassPath
 
 import qualified Java.Lang
 import qualified Java.IO
 
-test :: Generate ()
+test :: (Throws ENotFound e, Throws ENotLoaded e, Throws UnexpectedEndMethod e) => GenerateIO e ()
 test = do
   withClassPath $ do
       -- Add current directory (with Hello.class) to ClassPath
       addDirectory "."
 
-  -- Load method signature: Hello.hello()
+  -- Load method signature: Hello.hello() from Hello.class
   helloJava <- getClassMethod "./Hello" "hello"
 
   -- Initializer method. Just calls java.lang.Object.<init>
@@ -45,6 +47,7 @@ test = do
       invokeStatic Java.Lang.integer Java.Lang.valueOfInteger
       aastore
       invokeVirtual Java.IO.printStream Java.IO.printf
+      -- Call Hello.hello()
       invokeStatic "Hello" helloJava
       pop
       i0 RETURN
@@ -62,6 +65,6 @@ test = do
 
 main :: IO ()
 main = do
-  testClass <- generate [] "Test" test
+  testClass <- generateIO [] "Test" test
   B.writeFile "Test.class" (encodeClass testClass)