From 60774555568dbc64866d088cb51e45f9434c0f89 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Tue, 8 Aug 2023 18:12:06 +0800 Subject: make vararg assignment work with line decorator. --- spec/inputs/vararg.yue | 22 ++++++++++++++++++++++ spec/outputs/vararg.lua | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) (limited to 'spec') diff --git a/spec/inputs/vararg.yue b/spec/inputs/vararg.yue index c7b8ebf..466a4a6 100644 --- a/spec/inputs/vararg.yue +++ b/spec/inputs/vararg.yue @@ -52,5 +52,27 @@ join = (...) -> f_colon f!\func f_colon f(...)\func + _ = -> + list = {1, 2, 3, 4, 5} + fn = (ok) -> + ok, table.unpack list + ok, ... = fn true + print ok, ... + + fn_many_args = -> + 10, nil, 20, nil, 30 + + ... = fn_many_args! + print select "#", ... + print ... + + do + ... = 1, 2 if true + print ... + + do + a, ... = 1, 2 unless true + print a, select '#', ... + nil diff --git a/spec/outputs/vararg.lua b/spec/outputs/vararg.lua index 56e2011..6cfaccb 100644 --- a/spec/outputs/vararg.lua +++ b/spec/outputs/vararg.lua @@ -220,5 +220,50 @@ join = function(...) return _fn_0(_base_0, ...) end end)(...)) + local _ + _ = function() + local list = { + 1, + 2, + 3, + 4, + 5 + } + local fn + fn = function(ok) + return ok, table.unpack(list) + end + return (function(_arg_0, ...) + local ok = _arg_0 + print(ok, ...) + local fn_many_args + fn_many_args = function() + return 10, nil, 20, nil, 30 + end + return (function(...) + print(select("#", ...)) + return print(...) + end)(fn_many_args()) + end)(fn(true)) + end + do + (function(...) + return print(...) + end)((function() + if true then + return 1, 2 + end + end)()) + end + do + (function(_arg_0, ...) + local a = _arg_0 + return print(a, select('#', ...)) + end)((function() + if not true then + return 1, 2 + end + end)()) + end return nil end -- cgit v1.2.3-55-g6feb