From 27b7211e74d5677fbf5c5212264d32c7bfaffc20 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Thu, 8 Sep 2022 18:04:50 +0800 Subject: added a missing scope. --- spec/inputs/destructure.yue | 6 ++++++ spec/outputs/destructure.lua | 19 +++++++++++++++++-- src/yuescript/yue_compiler.cpp | 7 ++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/spec/inputs/destructure.yue b/spec/inputs/destructure.yue index ce593ec..403923a 100644 --- a/spec/inputs/destructure.yue +++ b/spec/inputs/destructure.yue @@ -210,3 +210,9 @@ do when {: = "item", <"123">: meta_field} print name, meta_field +do + tb = {} + <[a + b]>: v1, [c!]: v2 = tb + +nil + diff --git a/spec/outputs/destructure.lua b/spec/outputs/destructure.lua index 0da920e..10ad2d0 100644 --- a/spec/outputs/destructure.lua +++ b/spec/outputs/destructure.lua @@ -470,8 +470,8 @@ do end) end end - local _exp_0 = tb do + local _exp_0 = tb local _tab_0 = "table" == type(_exp_0) if _tab_0 then local name, meta_field @@ -484,8 +484,23 @@ do end end if meta_field ~= nil then - return print(name, meta_field) + print(name, meta_field) end end end end +do + local tb = { } + local _obj_0 = tb + do + local _tmp_0 = c() + local v2 = _obj_0[_tmp_0] + end + local v1 + do + local _obj_1 = getmetatable(_obj_0) + local _tmp_1 = a + b + v1 = _obj_1[_tmp_1] + end +end +return nil diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 73b4ae9..9a9e2d6 100755 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -59,7 +59,7 @@ namespace yue { typedef std::list str_list; -const std::string_view version = "0.15.1"sv; +const std::string_view version = "0.15.2"sv; const std::string_view extension = "yue"sv; class YueCompilerImpl { @@ -1856,6 +1856,11 @@ private: } } if (destruct.inlineAssignment) { + if (!extraScope) { + extraScope = true; + temp.push_back(indent() + "do"s + nll(x)); + pushScope(); + } transformAssignment(destruct.inlineAssignment, temp); } if (optionalDestruct) { -- cgit v1.2.3-55-g6feb