diff options
author | Eduardo Julian | 2019-10-16 02:19:52 -0400 |
---|---|---|
committer | Eduardo Julian | 2019-10-16 02:19:52 -0400 |
commit | 3028cc4f45d2d7d66456467de506341800df14d8 (patch) | |
tree | 184a517a4b0634fd50d834b4b16753fd11c691a2 /new-luxc/source/luxc/lang/host | |
parent | 688870c71829e1bee89c9f827cc2032507cc507b (diff) |
Now allowing types for methods.
Diffstat (limited to '')
-rw-r--r-- | new-luxc/source/luxc/lang/host/jvm/def.lux | 20 | ||||
-rw-r--r-- | new-luxc/source/luxc/lang/host/jvm/inst.lux | 9 |
2 files changed, 14 insertions, 15 deletions
diff --git a/new-luxc/source/luxc/lang/host/jvm/def.lux b/new-luxc/source/luxc/lang/host/jvm/def.lux index 08fccc640..f274da61f 100644 --- a/new-luxc/source/luxc/lang/host/jvm/def.lux +++ b/new-luxc/source/luxc/lang/host/jvm/def.lux @@ -18,8 +18,8 @@ ["." name]] ["." type (#+ Type Constraint) [category (#+ Class Value Method)] - ["." signature (#+ Signature)] - ["." descriptor (#+ Descriptor)]]]]] + ["." signature] + ["." descriptor]]]]] ["." //]) (def: signature (|>> type.signature signature.signature)) @@ -211,16 +211,16 @@ _ (ClassWriter::visitEnd writer)] (ClassWriter::toByteArray writer))) -(def: #export (method visibility config name [signature descriptor] then) - (-> //.Visibility //.Method-Config Text [(Signature Method) (Descriptor Method)] //.Inst +(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.descriptor descriptor) - (signature.signature signature) + (..descriptor type) + (..signature type) (string-array (list)) writer) _ (MethodVisitor::visitCode =method) @@ -229,8 +229,8 @@ _ (MethodVisitor::visitEnd =method)] writer))) -(def: #export (abstract-method visibility config name [signature descriptor]) - (-> //.Visibility //.Method-Config Text [(Signature Method) (Descriptor Method)] +(def: #export (abstract-method visibility config name type) + (-> //.Visibility //.Method-Config Text (Type Method) //.Def) (function (_ writer) (let [=method (ClassWriter::visitMethod ($_ i.+ @@ -238,8 +238,8 @@ (method-flags config) (Opcodes::ACC_ABSTRACT)) (..binary-name name) - (descriptor.descriptor descriptor) - (signature.signature signature) + (..descriptor type) + (..signature type) (string-array (list)) writer) _ (MethodVisitor::visitEnd =method)] diff --git a/new-luxc/source/luxc/lang/host/jvm/inst.lux b/new-luxc/source/luxc/lang/host/jvm/inst.lux index d5d7cb1fb..e52d11d9b 100644 --- a/new-luxc/source/luxc/lang/host/jvm/inst.lux +++ b/new-luxc/source/luxc/lang/host/jvm/inst.lux @@ -27,8 +27,7 @@ ["." type (#+ Type) ("#@." equivalence) [category (#+ Void Value Return Method Primitive Object Class Array Var Parameter)] ["." box] - ["." signature (#+ Signature)] - ["." descriptor (#+ Descriptor)] + ["." descriptor] ["." reflection]]]] [tool [compiler @@ -297,14 +296,14 @@ (undefined))))))) (template [<name> <inst> <interface?>] - [(def: #export (<name> class method-name [method-signature method-descriptor]) - (-> (Type Class) Text [(Signature Method) (Descriptor Method)] Inst) + [(def: #export (<name> class method-name method) + (-> (Type Class) Text (Type Method) Inst) (function (_ visitor) (do-to visitor (org/objectweb/asm/MethodVisitor::visitMethodInsn (<inst>) (..class-name class) method-name - (descriptor.descriptor method-descriptor) + (|> method type.descriptor descriptor.descriptor) <interface?>))))] [INVOKESTATIC org/objectweb/asm/Opcodes::INVOKESTATIC false] |