diff options
Diffstat (limited to 'new-luxc/source/luxc/lang/translation/jvm')
-rw-r--r-- | new-luxc/source/luxc/lang/translation/jvm/procedure/host.lux | 21 |
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 |