From 2733fe565c405f7b382fb7c02c69f78fb65d2f20 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Tue, 19 Mar 2024 16:21:35 +0800 Subject: fix nil coalescing anonymous function moving issue. add test cases. --- src/yuescript/yue_compiler.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index a443f39..1864846 100644 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -3787,11 +3787,6 @@ private: } void transformNilCoalesedExp(Exp_t* exp, str_list& out, ExpUsage usage, ExpList_t* assignList = nullptr, bool nilBranchOnly = false) { - if (usage == ExpUsage::Closure) { - if (transformAsUpValueFunc(exp, out)) { - return; - } - } auto x = exp; str_list temp; auto left = exp->new_ptr(); @@ -3814,6 +3809,12 @@ private: } std::string* funcStart = nullptr; if (usage == ExpUsage::Closure) { + left->nilCoalesed.set(exp->nilCoalesed); + if (transformAsUpValueFunc(left, temp)) { + out.push_back(join(temp)); + return; + } + left->nilCoalesed.set(nullptr); pushAnonFunctionScope(); pushAnonVarArg(); funcStart = &temp.emplace_back(); -- cgit v1.2.3-55-g6feb