X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=TestGen.hs;h=175e10b1b79a1f8a153baf35058f78d8027edf45;hb=736d0e920159839bf89dff10cc27583b91fc7216;hp=540a7da0d139ae257eea1ba39936679cec3755ce;hpb=5f0e7d26a4a5c125b8f68539505d831352e9515b;p=hs-java.git diff --git a/TestGen.hs b/TestGen.hs index 540a7da..175e10b 100644 --- a/TestGen.hs +++ b/TestGen.hs @@ -2,22 +2,14 @@ import qualified Data.ByteString.Lazy as B -import JVM.Types import JVM.ClassFile import JVM.Converter import JVM.Assembler -import JVM.Generator -import JVM.Generator.Instructions +import JVM.Builder import qualified Java.Lang import qualified Java.IO -hello :: NameType Method -hello = NameType "hello" $ MethodSignature [IntType] ReturnsVoid - -valueOf :: NameType Method -valueOf = NameType "valueOf" $ MethodSignature [IntType] (Returns Java.Lang.integerClass) - test :: Generate () test = do newMethod [ACC_PUBLIC] "" [] ReturnsVoid $ do @@ -25,12 +17,7 @@ test = do invokeSpecial Java.Lang.object Java.Lang.objectInit i0 RETURN - newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing Java.Lang.stringClass] ReturnsVoid $ do - iconst_5 - invokeStatic "Test" hello - i0 RETURN - - newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do + hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do getStaticField Java.Lang.system Java.IO.out loadString "Здравствуй, мир!" invokeVirtual Java.IO.printStream Java.IO.println @@ -41,12 +28,20 @@ test = do dup iconst_0 iload_ I0 - invokeStatic Java.Lang.integer valueOf + invokeStatic Java.Lang.integer Java.Lang.valueOfInteger aastore invokeVirtual Java.IO.printStream Java.IO.printf pop i0 RETURN + newMethod [ACC_PUBLIC, ACC_STATIC] "main" [arrayOf Java.Lang.stringClass] ReturnsVoid $ do + iconst_5 + invokeStatic "Test" hello + i0 RETURN + + return () + +testClass :: Class Resolved testClass = generate "Test" test main = do