diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux/host.jvm.lux | 25 | ||||
-rw-r--r-- | stdlib/source/lux/target/jvm/bytecode.lux | 10 | ||||
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/common.lux | 4 |
3 files changed, 27 insertions, 12 deletions
diff --git a/stdlib/source/lux/host.jvm.lux b/stdlib/source/lux/host.jvm.lux index d0952f71e..b34cd4242 100644 --- a/stdlib/source/lux/host.jvm.lux +++ b/stdlib/source/lux/host.jvm.lux @@ -32,7 +32,7 @@ [encoding ["." name (#+ External)]] ["." type (#+ Type Argument Typed) - ["." category (#+ Void Value Return Method Primitive Object Class Array Var Parameter Declaration)] + ["." category (#+ Void Value' Value Return' Return Method Primitive Object Class Array Var Parameter Declaration)] ["." box] ["." descriptor] ["." signature] @@ -44,8 +44,15 @@ (|>> name.internal name.read)) -(def: signature (|>> type.signature signature.signature)) -(def: reflection (|>> type.reflection reflection.reflection)) +(def: signature + (All [category] + (-> (Type category) Text)) + (|>> type.signature signature.signature)) + +(def: reflection + (All [category] + (-> (Type (<| Return' Value' category)) Text)) + (|>> type.reflection reflection.reflection)) (template [<name> <class>] [(def: #export <name> .Type (#.Primitive <class> #.Nil))] @@ -657,7 +664,9 @@ ))))) (def: (itself^ type) - (All [a] (-> (Type a) (Parser (Type a)))) + (All [category] + (-> (Type (<| Return' Value' category)) + (Parser (Type (<| Return' Value' category))))) (do <>.monad [_ (<c>.identifier! ["" (..reflection type)])] (wrap type))) @@ -690,9 +699,15 @@ (..array^ type^) )))) +(def: void^ + (Parser (Type Void)) + (do <>.monad + [_ (<c>.identifier! ["" (reflection.reflection reflection.void)])] + (wrap type.void))) + (def: (return^ imports type-vars) (-> Context (List (Type Var)) (Parser (Type Return))) - (<>.either (itself^ type.void) + (<>.either ..void^ (..type^ imports type-vars))) (def: var^ diff --git a/stdlib/source/lux/target/jvm/bytecode.lux b/stdlib/source/lux/target/jvm/bytecode.lux index bba140a7a..9092445c7 100644 --- a/stdlib/source/lux/target/jvm/bytecode.lux +++ b/stdlib/source/lux/target/jvm/bytecode.lux @@ -458,7 +458,7 @@ (import: #long java/lang/Float) -(template [<name> <type> <constructor> <constant> <ldc> <to-lux> <specializations>] +(template [<name> <type> <constructor> <constant> <wide> <to-lux> <specializations>] [(def: #export (<name> value) (-> <type> (Bytecode Any)) (case (|> value <to-lux>) @@ -473,7 +473,7 @@ (..bytecode $0 $1 @_ _.ldc [index]) (#try.Failure _) - (..bytecode $0 $1 @_ <ldc> [index])))))] + (..bytecode $0 $1 @_ <wide> [index])))))] [int I32 //constant.integer //constant/pool.integer _.ldc-w/integer (<| .int i32.i64) @@ -485,13 +485,13 @@ [+4 _.iconst-4] [+5 _.iconst-5])] [float java/lang/Float //constant.float //constant/pool.float _.ldc-w/float - host.float-to-double + (<| (:coerce Frac) host.float-to-double) ([+0.0 _.fconst-0] [+1.0 _.fconst-1] [+2.0 _.fconst-2])] ) -(template [<name> <type> <constructor> <constant> <ldc> <to-lux> <specializations>] +(template [<name> <type> <constructor> <constant> <wide> <to-lux> <specializations>] [(def: #export (<name> value) (-> <type> (Bytecode Any)) (case (|> value <to-lux>) @@ -501,7 +501,7 @@ _ (do ..monad [index (..lift (<constant> (<constructor> value)))] - (..bytecode $0 $2 @_ <ldc> [index]))))] + (..bytecode $0 $2 @_ <wide> [index]))))] [long Int //constant.long //constant/pool.long _.ldc2-w/long (<|) diff --git a/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/common.lux b/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/common.lux index d06a5167c..d57dd6b50 100644 --- a/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/common.lux +++ b/stdlib/source/lux/tool/compiler/phase/generation/jvm/extension/common.lux @@ -184,8 +184,8 @@ ) (import: #long java/lang/Double - (#static MIN_VALUE java/lang/Double) - (#static MAX_VALUE java/lang/Double)) + (#static MIN_VALUE double) + (#static MAX_VALUE double)) (template [<name> <const>] [(def: (<name> _) |