From 4955cfe6f248a039e95b404f26abfae04204740f Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 18 Apr 2020 04:10:45 -0400 Subject: Generating module IDs in a similar way to artifact IDs. --- .../source/luxc/lang/translation/jvm/function.lux | 27 +++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'new-luxc/source/luxc/lang/translation/jvm/function.lux') diff --git a/new-luxc/source/luxc/lang/translation/jvm/function.lux b/new-luxc/source/luxc/lang/translation/jvm/function.lux index 449855aca..fa91b41df 100644 --- a/new-luxc/source/luxc/lang/translation/jvm/function.lux +++ b/new-luxc/source/luxc/lang/translation/jvm/function.lux @@ -6,6 +6,9 @@ [pipe (#+ when> new>)] ["." function]] [data + ["." product] + [text + ["%" format (#+ format)]] [number ["n" nat] ["i" int]] @@ -24,7 +27,9 @@ [lux [analysis (#+ Environment)] [synthesis (#+ Synthesis Abstraction Apply)] - ["." generation]]]]]] + ["." generation]]] + [meta + [archive (#+ Archive)]]]]] [luxc [lang [host @@ -96,10 +101,10 @@ (list.repeat amount) _.fuse)) -(def: (instance class arity env) - (-> (Type Class) Arity Environment (Operation Inst)) +(def: (instance archive class arity env) + (-> Archive (Type Class) Arity Environment (Operation Inst)) (do phase.monad - [captureI+ (monad.map @ reference.variable env) + [captureI+ (monad.map @ (reference.variable archive) env) #let [argsI (if (poly-arg? arity) (|> (nullsI (dec arity)) (list (_.int +0)) @@ -266,8 +271,8 @@ def.fuse) function.identity)) -(def: #export (with-function @begin class env arity bodyI) - (-> Label Text Environment Arity Inst +(def: #export (with-function archive @begin class env arity bodyI) + (-> Archive Label Text Environment Arity Inst (Operation [Def Inst])) (let [classD (type.class class (list)) applyD (: Def @@ -290,19 +295,19 @@ applyD ))] (do phase.monad - [instanceI (instance classD arity env)] + [instanceI (instance archive classD arity env)] (wrap [functionD instanceI])))) (def: #export (function generate archive [env arity bodyS]) (Generator Abstraction) (do phase.monad [@begin _.make-label - [function-context bodyI] (generation.with-new-context + [function-context bodyI] (generation.with-new-context archive (generation.with-anchor [@begin 1] (generate archive bodyS))) - #let [function-class (//runtime.class-name function-context)] - [functionD instanceI] (with-function @begin function-class env arity bodyI) - _ (generation.save! true ["" function-class] + #let [function-class (//.class-name function-context)] + [functionD instanceI] (with-function archive @begin function-class env arity bodyI) + _ (generation.save! true ["" (%.nat (product.right function-context))] [function-class (def.class #$.V1_6 #$.Public $.finalC function-class (list) -- cgit v1.2.3