diff options
author | Eduardo Julian | 2015-12-16 00:10:43 -0400 |
---|---|---|
committer | Eduardo Julian | 2015-12-16 00:10:43 -0400 |
commit | 405a7efaf6ba2f20c5d3c5c654da964bda1451c6 (patch) | |
tree | e5fbbffb81ed5d31a5d854ca8aad10b2aee0523e /src/lux/host/generics.clj | |
parent | 08aa828cd4f83b719ef8d1af75463fadc67bcddb (diff) |
- Changed the way methods are defined in class definitions.
Diffstat (limited to '')
-rw-r--r-- | src/lux/host/generics.clj | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/lux/host/generics.clj b/src/lux/host/generics.clj index 79b28b2ef..ccedf70ae 100644 --- a/src/lux/host/generics.clj +++ b/src/lux/host/generics.clj @@ -56,8 +56,18 @@ (str "T" name ";") (&/$GenericClass name params) - (let [params* (str "<" (->> params (&/|map gclass->signature) (&/|interpose " ") (&/fold str "")) ">")] - (str "L" (->bytecode-class-name name) params* ";")) + (case name + "void" "V" + "boolean" "Z" + "byte" "B" + "short" "S" + "int" "I" + "long" "L" + "float" "F" + "double" "D" + "char" "C" + (let [params* (str "<" (->> params (&/|map gclass->signature) (&/|interpose " ") (&/fold str "")) ">")] + (str "L" (->bytecode-class-name name) params* ";"))) (&/$GenericArray param) (str "[" (gclass->signature param)))) @@ -86,7 +96,10 @@ (->type-signature name) (&/$GenericArray param) - (str "[" (gclass->simple-signature param))))) + (str "[" (gclass->simple-signature param)) + + _ + (assert false (str 'gclass->simple-signature " " (&/adt->text gclass)))))) (let [object-bc-name (->bytecode-class-name "java.lang.Object")] (defn gclass->bytecode-class-name [gclass] @@ -103,9 +116,9 @@ (defn method-signatures [method-decl] (|let [[=name =anns =gvars =exceptions =inputs =output] method-decl - simple-signature (str "(" (&/fold str "" (&/|map (comp gclass->simple-signature &/|second) =inputs)) ")" (gclass->simple-signature =output)) + simple-signature (str "(" (&/fold str "" (&/|map gclass->simple-signature =inputs)) ")" (gclass->simple-signature =output)) generic-signature (str "<" (->> =gvars (&/|interpose " ") (&/fold str "")) ">" - "(" (&/fold str "" (&/|map (comp gclass->signature &/|second) =inputs)) ")" + "(" (&/fold str "" (&/|map gclass->signature =inputs)) ")" (gclass->signature =output) (->> =exceptions (&/|map gclass->signature) (&/|interpose " ") (&/fold str "")))] (&/T simple-signature generic-signature))) |