From 412bc3d7606cb0d07c39861c7ae4e89c7139da31 Mon Sep 17 00:00:00 2001 From: Li Jin Date: Wed, 28 Feb 2024 15:57:30 +0800 Subject: confirmed only the index/key variable is const in for-loop. --- src/yuescript/yue_compiler.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 7a4aa62..0d38fa5 100644 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -75,7 +75,7 @@ static std::unordered_set Metamethods = { "close"s // Lua 5.4 }; -const std::string_view version = "0.22.0"sv; +const std::string_view version = "0.22.1"sv; const std::string_view extension = "yue"sv; class CompileError : public std::logic_error { @@ -6892,7 +6892,8 @@ private: auto x = nameList; str_list temp; str_list vars; - str_list varBefore, varConstAfter, varAfter; + str_list varBefore, varAfter; + std::string varConstAfter; bool extraScope = false; std::list>> destructPairs; for (auto _item : nameList->items.objects()) { @@ -6901,7 +6902,9 @@ private: case id(): transformVariable(static_cast(item), vars); varAfter.push_back(vars.back()); - varConstAfter.push_back(vars.back()); + if (_item == nameList->items.objects().front()) { + varConstAfter = vars.back(); + } break; case id(): { auto desVar = getUnusedName("_des_"sv); @@ -7035,7 +7038,7 @@ private: pushScope(); for (const auto& var : vars) forceAddToScope(var); for (const auto& var : varAfter) addToScope(var); - for (const auto& var : varConstAfter) markVarConst(var); + if (!varConstAfter.empty()) markVarConst(varConstAfter); if (!destructPairs.empty()) { temp.clear(); for (auto& pair : destructPairs) { -- cgit v1.2.3-55-g6feb