From 6eb9cf17f161522d4eddf6783284952f8a84f099 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 15 Apr 2018 02:24:27 -0400 Subject: - Fixes for R back-end. --- new-luxc/source/luxc/lang/translation/r/function.jvm.lux | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'new-luxc/source/luxc/lang/translation/r/function.jvm.lux') diff --git a/new-luxc/source/luxc/lang/translation/r/function.jvm.lux b/new-luxc/source/luxc/lang/translation/r/function.jvm.lux index 3d4407bd0..565a44909 100644 --- a/new-luxc/source/luxc/lang/translation/r/function.jvm.lux +++ b/new-luxc/source/luxc/lang/translation/r/function.jvm.lux @@ -60,13 +60,14 @@ #let [arityO (|> arity nat-to-int r.int) $num_args (r.var "num_args") $function (r.var function-name) + var-args (r.code (format "list" (r.expression (@@ r.var-args)))) apply-poly (function (_ args func) (r.apply (list func args) (r.global "do.call")))]] (with-closure function-name closureO+ (r.set! $function (r.function (list r.var-args) ($_ r.then - (r.set! $curried (@@ r.var-args)) + (r.set! $curried var-args) (r.set! $num_args (r.length (@@ $curried))) (r.cond (list [(|> (@@ $num_args) (r.= arityO)) ($_ r.then @@ -76,7 +77,9 @@ (list/fold r.then bodyO)))] [(|> (@@ $num_args) (r.> arityO)) (let [arity-args (r.slice (r.int 1) arityO (@@ $curried)) - output-func-args (r.slice arityO (@@ $num_args) (@@ $curried))] + output-func-args (r.slice (|> arityO (r.+ (r.int 1))) + (@@ $num_args) + (@@ $curried))] (|> (@@ $function) (apply-poly arity-args) (apply-poly output-func-args)))]) @@ -84,7 +87,7 @@ (let [$missing (r.var "missing")] (r.function (list r.var-args) ($_ r.then - (r.set! $missing (@@ r.var-args)) + (r.set! $missing var-args) (|> (@@ $function) (apply-poly (r.apply (list (@@ $curried) (@@ $missing)) (r.global "append")))))))))))) -- cgit v1.2.3