aboutsummaryrefslogtreecommitdiff
path: root/lux-jvm/source/luxc/lang/host
diff options
context:
space:
mode:
authorEduardo Julian2020-10-12 20:22:31 -0400
committerEduardo Julian2020-10-12 20:22:31 -0400
commit00d5ccbc043960037f644d4ff09b6a46fd0093d0 (patch)
tree9515edc59fb511fa30e68c832d669654853ff702 /lux-jvm/source/luxc/lang/host
parent5b222d040ee361dd4022e88488a6bcef3ca40a71 (diff)
Type-checking macros via the Macro' type from the standard library.
Diffstat (limited to 'lux-jvm/source/luxc/lang/host')
-rw-r--r--lux-jvm/source/luxc/lang/host/jvm.lux6
-rw-r--r--lux-jvm/source/luxc/lang/host/jvm/def.lux196
-rw-r--r--lux-jvm/source/luxc/lang/host/jvm/inst.lux10
3 files changed, 106 insertions, 106 deletions
diff --git a/lux-jvm/source/luxc/lang/host/jvm.lux b/lux-jvm/source/luxc/lang/host/jvm.lux
index 9301ab4ae..6d2e49b22 100644
--- a/lux-jvm/source/luxc/lang/host/jvm.lux
+++ b/lux-jvm/source/luxc/lang/host/jvm.lux
@@ -31,14 +31,14 @@
(import: org/objectweb/asm/ClassWriter)
-(import: #long org/objectweb/asm/Label
+(import: org/objectweb/asm/Label
(new []))
(type: #export Def
- (-> ClassWriter ClassWriter))
+ (-> org/objectweb/asm/ClassWriter org/objectweb/asm/ClassWriter))
(type: #export Inst
- (-> MethodVisitor MethodVisitor))
+ (-> org/objectweb/asm/MethodVisitor org/objectweb/asm/MethodVisitor))
(type: #export Label
org/objectweb/asm/Label)
diff --git a/lux-jvm/source/luxc/lang/host/jvm/def.lux b/lux-jvm/source/luxc/lang/host/jvm/def.lux
index f274da61f..642f42018 100644
--- a/lux-jvm/source/luxc/lang/host/jvm/def.lux
+++ b/lux-jvm/source/luxc/lang/host/jvm/def.lux
@@ -26,8 +26,8 @@
(def: descriptor (|>> type.descriptor descriptor.descriptor))
(def: class-name (|>> type.descriptor descriptor.class-name name.read))
-(import: #long java/lang/Object)
-(import: #long java/lang/String)
+(import: java/lang/Object)
+(import: java/lang/String)
(import: org/objectweb/asm/Opcodes
(#static ACC_PUBLIC int)
@@ -68,15 +68,15 @@
(#static COMPUTE_MAXS int)
(#static COMPUTE_FRAMES int)
(new [int])
- (visit [int int String String String [String]] void)
+ (visit [int int java/lang/String java/lang/String java/lang/String [java/lang/String]] void)
(visitEnd [] void)
- (visitField [int String String String Object] FieldVisitor)
- (visitMethod [int String String String [String]] MethodVisitor)
+ (visitField [int java/lang/String java/lang/String java/lang/String java/lang/Object] org/objectweb/asm/FieldVisitor)
+ (visitMethod [int java/lang/String java/lang/String java/lang/String [java/lang/String]] org/objectweb/asm/MethodVisitor)
(toByteArray [] [byte]))
(def: (string-array values)
(-> (List Text) (Array Text))
- (let [output (host.array String (list.size values))]
+ (let [output (host.array java/lang/String (list.size values))]
(exec (list@map (function (_ [idx value])
(host.array-write idx value output))
(list.enumerate values))
@@ -85,43 +85,43 @@
(def: (version-flag version)
(-> //.Version Int)
(case version
- #//.V1_1 (Opcodes::V1_1)
- #//.V1_2 (Opcodes::V1_2)
- #//.V1_3 (Opcodes::V1_3)
- #//.V1_4 (Opcodes::V1_4)
- #//.V1_5 (Opcodes::V1_5)
- #//.V1_6 (Opcodes::V1_6)
- #//.V1_7 (Opcodes::V1_7)
- #//.V1_8 (Opcodes::V1_8)))
+ #//.V1_1 (org/objectweb/asm/Opcodes::V1_1)
+ #//.V1_2 (org/objectweb/asm/Opcodes::V1_2)
+ #//.V1_3 (org/objectweb/asm/Opcodes::V1_3)
+ #//.V1_4 (org/objectweb/asm/Opcodes::V1_4)
+ #//.V1_5 (org/objectweb/asm/Opcodes::V1_5)
+ #//.V1_6 (org/objectweb/asm/Opcodes::V1_6)
+ #//.V1_7 (org/objectweb/asm/Opcodes::V1_7)
+ #//.V1_8 (org/objectweb/asm/Opcodes::V1_8)))
(def: (visibility-flag visibility)
(-> //.Visibility Int)
(case visibility
- #//.Public (Opcodes::ACC_PUBLIC)
- #//.Protected (Opcodes::ACC_PROTECTED)
- #//.Private (Opcodes::ACC_PRIVATE)
+ #//.Public (org/objectweb/asm/Opcodes::ACC_PUBLIC)
+ #//.Protected (org/objectweb/asm/Opcodes::ACC_PROTECTED)
+ #//.Private (org/objectweb/asm/Opcodes::ACC_PRIVATE)
#//.Default +0))
(def: (class-flags config)
(-> //.Class-Config Int)
($_ i.+
- (if (get@ #//.finalC config) (Opcodes::ACC_FINAL) +0)))
+ (if (get@ #//.finalC config) (org/objectweb/asm/Opcodes::ACC_FINAL) +0)))
(def: (method-flags config)
(-> //.Method-Config Int)
($_ i.+
- (if (get@ #//.staticM config) (Opcodes::ACC_STATIC) +0)
- (if (get@ #//.finalM config) (Opcodes::ACC_FINAL) +0)
- (if (get@ #//.synchronizedM config) (Opcodes::ACC_SYNCHRONIZED) +0)
- (if (get@ #//.strictM config) (Opcodes::ACC_STRICT) +0)))
+ (if (get@ #//.staticM config) (org/objectweb/asm/Opcodes::ACC_STATIC) +0)
+ (if (get@ #//.finalM config) (org/objectweb/asm/Opcodes::ACC_FINAL) +0)
+ (if (get@ #//.synchronizedM config) (org/objectweb/asm/Opcodes::ACC_SYNCHRONIZED) +0)
+ (if (get@ #//.strictM config) (org/objectweb/asm/Opcodes::ACC_STRICT) +0)))
(def: (field-flags config)
(-> //.Field-Config Int)
($_ i.+
- (if (get@ #//.staticF config) (Opcodes::ACC_STATIC) +0)
- (if (get@ #//.finalF config) (Opcodes::ACC_FINAL) +0)
- (if (get@ #//.transientF config) (Opcodes::ACC_TRANSIENT) +0)
- (if (get@ #//.volatileF config) (Opcodes::ACC_VOLATILE) +0)))
+ (if (get@ #//.staticF config) (org/objectweb/asm/Opcodes::ACC_STATIC) +0)
+ (if (get@ #//.finalF config) (org/objectweb/asm/Opcodes::ACC_FINAL) +0)
+ (if (get@ #//.transientF config) (org/objectweb/asm/Opcodes::ACC_TRANSIENT) +0)
+ (if (get@ #//.volatileF config) (org/objectweb/asm/Opcodes::ACC_VOLATILE) +0)))
(def: param-signature
(-> (Type Class) Text)
@@ -154,8 +154,8 @@
(def: class-computes
Int
($_ i.+
- (ClassWriter::COMPUTE_MAXS)
- ## (ClassWriter::COMPUTE_FRAMES)
+ (org/objectweb/asm/ClassWriter::COMPUTE_MAXS)
+ ## (org/objectweb/asm/ClassWriter::COMPUTE_FRAMES)
))
(def: binary-name (|>> name.internal name.read))
@@ -165,25 +165,25 @@
definitions)
(-> //.Version //.Visibility //.Class-Config Text (List Constraint) (Type Class) (List (Type Class)) //.Def
(host.type [byte]))
- (let [writer (|> (do-to (ClassWriter::new class-computes)
- (ClassWriter::visit (version-flag version)
- ($_ i.+
- (Opcodes::ACC_SUPER)
- <flag>
- (visibility-flag visibility)
- (class-flags config))
- (..binary-name name)
- (constraints-signature constraints super interfaces)
- (..class-name super)
- (|> interfaces
- (list@map ..class-name)
- string-array)))
+ (let [writer (|> (do-to (org/objectweb/asm/ClassWriter::new class-computes)
+ (org/objectweb/asm/ClassWriter::visit (version-flag version)
+ ($_ i.+
+ (org/objectweb/asm/Opcodes::ACC_SUPER)
+ <flag>
+ (visibility-flag visibility)
+ (class-flags config))
+ (..binary-name name)
+ (constraints-signature constraints super interfaces)
+ (..class-name super)
+ (|> interfaces
+ (list@map ..class-name)
+ string-array)))
definitions)
- _ (ClassWriter::visitEnd writer)]
- (ClassWriter::toByteArray writer)))]
+ _ (org/objectweb/asm/ClassWriter::visitEnd writer)]
+ (org/objectweb/asm/ClassWriter::toByteArray writer)))]
[class +0]
- [abstract (Opcodes::ACC_ABSTRACT)]
+ [abstract (org/objectweb/asm/Opcodes::ACC_ABSTRACT)]
)
(def: $Object
@@ -194,84 +194,84 @@
definitions)
(-> //.Version //.Visibility //.Class-Config Text (List Constraint) (List (Type Class)) //.Def
(host.type [byte]))
- (let [writer (|> (do-to (ClassWriter::new class-computes)
- (ClassWriter::visit (version-flag version)
- ($_ i.+
- (Opcodes::ACC_SUPER)
- (Opcodes::ACC_INTERFACE)
- (visibility-flag visibility)
- (class-flags config))
- (..binary-name name)
- (constraints-signature constraints $Object interfaces)
- (..class-name $Object)
- (|> interfaces
- (list@map ..class-name)
- string-array)))
+ (let [writer (|> (do-to (org/objectweb/asm/ClassWriter::new class-computes)
+ (org/objectweb/asm/ClassWriter::visit (version-flag version)
+ ($_ i.+
+ (org/objectweb/asm/Opcodes::ACC_SUPER)
+ (org/objectweb/asm/Opcodes::ACC_INTERFACE)
+ (visibility-flag visibility)
+ (class-flags config))
+ (..binary-name name)
+ (constraints-signature constraints $Object interfaces)
+ (..class-name $Object)
+ (|> interfaces
+ (list@map ..class-name)
+ string-array)))
definitions)
- _ (ClassWriter::visitEnd writer)]
- (ClassWriter::toByteArray writer)))
+ _ (org/objectweb/asm/ClassWriter::visitEnd writer)]
+ (org/objectweb/asm/ClassWriter::toByteArray writer)))
(def: #export (method visibility config name type then)
(-> //.Visibility //.Method-Config Text (Type Method) //.Inst
//.Def)
(function (_ writer)
- (let [=method (ClassWriter::visitMethod ($_ i.+
- (visibility-flag visibility)
- (method-flags config))
- (..binary-name name)
- (..descriptor type)
- (..signature type)
- (string-array (list))
- writer)
- _ (MethodVisitor::visitCode =method)
+ (let [=method (org/objectweb/asm/ClassWriter::visitMethod ($_ i.+
+ (visibility-flag visibility)
+ (method-flags config))
+ (..binary-name name)
+ (..descriptor type)
+ (..signature type)
+ (string-array (list))
+ writer)
+ _ (org/objectweb/asm/MethodVisitor::visitCode =method)
_ (then =method)
- _ (MethodVisitor::visitMaxs +0 +0 =method)
- _ (MethodVisitor::visitEnd =method)]
+ _ (org/objectweb/asm/MethodVisitor::visitMaxs +0 +0 =method)
+ _ (org/objectweb/asm/MethodVisitor::visitEnd =method)]
writer)))
(def: #export (abstract-method visibility config name type)
(-> //.Visibility //.Method-Config Text (Type Method)
//.Def)
(function (_ writer)
- (let [=method (ClassWriter::visitMethod ($_ i.+
- (visibility-flag visibility)
- (method-flags config)
- (Opcodes::ACC_ABSTRACT))
- (..binary-name name)
- (..descriptor type)
- (..signature type)
- (string-array (list))
- writer)
- _ (MethodVisitor::visitEnd =method)]
+ (let [=method (org/objectweb/asm/ClassWriter::visitMethod ($_ i.+
+ (visibility-flag visibility)
+ (method-flags config)
+ (org/objectweb/asm/Opcodes::ACC_ABSTRACT))
+ (..binary-name name)
+ (..descriptor type)
+ (..signature type)
+ (string-array (list))
+ writer)
+ _ (org/objectweb/asm/MethodVisitor::visitEnd =method)]
writer)))
(def: #export (field visibility config name type)
(-> //.Visibility //.Field-Config Text (Type Value) //.Def)
(function (_ writer)
- (let [=field (do-to (ClassWriter::visitField ($_ i.+
- (visibility-flag visibility)
- (field-flags config))
- (..binary-name name)
- (..descriptor type)
- (..signature type)
- (host.null)
- writer)
- (FieldVisitor::visitEnd))]
+ (let [=field (do-to (org/objectweb/asm/ClassWriter::visitField ($_ i.+
+ (visibility-flag visibility)
+ (field-flags config))
+ (..binary-name name)
+ (..descriptor type)
+ (..signature type)
+ (host.null)
+ writer)
+ (org/objectweb/asm/FieldVisitor::visitEnd))]
writer)))
(template [<name> <lux-type> <jvm-type> <prepare>]
[(def: #export (<name> visibility config name value)
(-> //.Visibility //.Field-Config Text <lux-type> //.Def)
(function (_ writer)
- (let [=field (do-to (ClassWriter::visitField ($_ i.+
- (visibility-flag visibility)
- (field-flags config))
- (..binary-name name)
- (..descriptor <jvm-type>)
- (..signature <jvm-type>)
- (<prepare> value)
- writer)
- (FieldVisitor::visitEnd))]
+ (let [=field (do-to (org/objectweb/asm/ClassWriter::visitField ($_ i.+
+ (visibility-flag visibility)
+ (field-flags config))
+ (..binary-name name)
+ (..descriptor <jvm-type>)
+ (..signature <jvm-type>)
+ (<prepare> value)
+ writer)
+ (org/objectweb/asm/FieldVisitor::visitEnd))]
writer)))]
[boolean-field Bit type.boolean function.identity]
diff --git a/lux-jvm/source/luxc/lang/host/jvm/inst.lux b/lux-jvm/source/luxc/lang/host/jvm/inst.lux
index b673c7d7e..69f822591 100644
--- a/lux-jvm/source/luxc/lang/host/jvm/inst.lux
+++ b/lux-jvm/source/luxc/lang/host/jvm/inst.lux
@@ -39,15 +39,15 @@
(def: reflection (|>> type.reflection reflection.reflection))
## [Host]
-(import: #long java/lang/Object)
-(import: #long java/lang/String)
+(import: java/lang/Object)
+(import: java/lang/String)
(syntax: (declare {codes (p.many s.local-identifier)})
(|> codes
(list@map (function (_ code) (` ((~' #static) (~ (code.local-identifier code)) (~' int)))))
wrap))
-(`` (import: #long org/objectweb/asm/Opcodes
+(`` (import: org/objectweb/asm/Opcodes
(#static NOP int)
## Conversion
@@ -122,10 +122,10 @@
(~~ (declare RETURN IRETURN LRETURN FRETURN DRETURN ARETURN))
))
-(import: #long org/objectweb/asm/Label
+(import: org/objectweb/asm/Label
(new []))
-(import: #long org/objectweb/asm/MethodVisitor
+(import: org/objectweb/asm/MethodVisitor
(visitCode [] void)
(visitMaxs [int int] void)
(visitEnd [] void)