aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/translation
diff options
context:
space:
mode:
authorEduardo Julian2019-05-17 20:03:39 -0400
committerEduardo Julian2019-05-17 20:03:39 -0400
commit6916a864871247a2f6aa60d5c69814cd2ba8ae4b (patch)
treeb3c522d9d41c0f51a5abb25d338540c7f0ebd917 /new-luxc/source/luxc/lang/translation
parent6c5a33ea07732fdd415712af49784653266682b3 (diff)
Forgot to actually compile the methods. Now doing so.
Diffstat (limited to '')
-rw-r--r--new-luxc/source/luxc/lang/translation/jvm/procedure/host.lux21
1 files changed, 20 insertions, 1 deletions
diff --git a/new-luxc/source/luxc/lang/translation/jvm/procedure/host.lux b/new-luxc/source/luxc/lang/translation/jvm/procedure/host.lux
index cf68663a5..ae54dccc7 100644
--- a/new-luxc/source/luxc/lang/translation/jvm/procedure/host.lux
+++ b/new-luxc/source/luxc/lang/translation/jvm/procedure/host.lux
@@ -1055,12 +1055,31 @@
self-name arguments returnT exceptionsT
(normalize-method-body local-mapping body)]))
overriden-methods)]
+ method-definitions (|> normalized-methods
+ (monad.map @ (function (_ [ownerT name
+ strict-fp? annotations vars
+ self-name arguments returnT exceptionsT
+ bodyS])
+ (do @
+ [bodyG (generate bodyS)]
+ (wrap (_def.method #$.Public
+ (if strict-fp?
+ ($_ $.++M $.finalM $.strictM)
+ $.finalM)
+ name
+ (jvm.method (list@map product.right arguments)
+ returnT
+ (list@map (|>> #jvm.Class)
+ exceptionsT))
+ bodyG)))))
+ (:: @ map _def.fuse))
_ (generation.save! true ["" class-name]
[class-name
(_def.class #$.V1_6 #$.Public $.finalC
class-name (list)
super-class super-interfaces
- (|>> (///function.with-environment total-environment)))])]
+ (|>> (///function.with-environment total-environment)
+ method-definitions))])]
(anonymous-instance class-name total-environment)))]))
(def: bundle::class