X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=TestGen.hs;h=a42fa052c64ee8e058ad68b17c4707dc13eb3315;hb=0efcccbb68402feefe2aed7d0d0f091c18f97f14;hp=c0635252852c296604dfecb364ccefd5a3a7d7a2;hpb=16704d16f8e156bed9ff846c7fddee113f0f4057;p=hs-java.git diff --git a/TestGen.hs b/TestGen.hs index c063525..a42fa05 100644 --- a/TestGen.hs +++ b/TestGen.hs @@ -9,54 +9,43 @@ import JVM.Assembler import JVM.Generator import JVM.Generator.Instructions -initNT :: NameType Method -initNT = NameType "" $ MethodSignature [] ReturnsVoid +import qualified Java.Lang +import qualified Java.IO -helloNT :: NameType Method -helloNT = NameType "hello" $ MethodSignature [IntType] ReturnsVoid - -printlnNT :: NameType Method -printlnNT = NameType "println" $ MethodSignature [ObjectType "java/lang/String"] ReturnsVoid - -outNT :: NameType Field -outNT = NameType "out" $ ObjectType "java/io/PrintStream" - -valueOfNT :: NameType Method -valueOfNT = NameType "valueOf" $ MethodSignature [IntType] (Returns $ ObjectType "java/lang/Integer") - -printfNT :: NameType Method -printfNT = NameType "printf" $ MethodSignature [ObjectType "java/lang/String", - Array Nothing $ ObjectType "java/lang/Object"] (Returns $ ObjectType "java/io/PrintStream") +hello :: NameType Method +hello = NameType "hello" $ MethodSignature [IntType] ReturnsVoid test :: Generate () test = do newMethod [ACC_PUBLIC] "" [] ReturnsVoid $ do aload_ I0 - invokeSpecial "java/lang/Object" initNT + invokeSpecial Java.Lang.object Java.Lang.objectInit i0 RETURN - newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing $ ObjectType "java/lang/String"] ReturnsVoid $ do - iconst_5 - invokeStatic "Test" helloNT - i0 RETURN - - newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do - getStaticField "java/lang/System" outNT + hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do + getStaticField Java.Lang.system Java.IO.out loadString "Здравствуй, мир!" - invokeVirtual "java/io/PrintStream" printlnNT - getStaticField "java/lang/System" outNT + invokeVirtual Java.IO.printStream Java.IO.println + getStaticField Java.Lang.system Java.IO.out loadString "Argument: %d\n" iconst_1 - allocArray "java/lang/Object" + allocArray Java.Lang.object dup iconst_0 iload_ I0 - invokeStatic "java/lang/Integer" valueOfNT + invokeStatic Java.Lang.integer Java.Lang.valueOfInteger aastore - invokeVirtual "java/io/PrintStream" printfNT + invokeVirtual Java.IO.printStream Java.IO.printf pop i0 RETURN + newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing Java.Lang.stringClass] ReturnsVoid $ do + iconst_5 + invokeStatic "Test" hello + i0 RETURN + + return () + testClass = generate "Test" test main = do