aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2024-04-03 16:28:36 +0800
committerLi Jin <dragon-fly@qq.com>2024-04-03 16:28:36 +0800
commit6b204d11ad8426bb179ae3be1e71d30f08e3b375 (patch)
tree2c62ce37e49f78827d8740c3896e3b152444198f /src
parent21004f1fb9b2f6129a231a6c8d99179f0d6e3edf (diff)
downloadyuescript-6b204d11ad8426bb179ae3be1e71d30f08e3b375.tar.gz
yuescript-6b204d11ad8426bb179ae3be1e71d30f08e3b375.tar.bz2
yuescript-6b204d11ad8426bb179ae3be1e71d30f08e3b375.zip
fix a wrong case that marks for-each loop key variable constant.
Diffstat (limited to 'src')
-rw-r--r--src/yuescript/yue_compiler.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp
index 9208d5d..9a632fb 100644
--- a/src/yuescript/yue_compiler.cpp
+++ b/src/yuescript/yue_compiler.cpp
@@ -75,7 +75,7 @@ static std::unordered_set<std::string> Metamethods = {
75 "close"s // Lua 5.4 75 "close"s // Lua 5.4
76}; 76};
77 77
78const std::string_view version = "0.23.2"sv; 78const std::string_view version = "0.23.3"sv;
79const std::string_view extension = "yue"sv; 79const std::string_view extension = "yue"sv;
80 80
81class CompileError : public std::logic_error { 81class CompileError : public std::logic_error {
@@ -7312,6 +7312,9 @@ private:
7312 } 7312 }
7313 switch (loopTarget->get_id()) { 7313 switch (loopTarget->get_id()) {
7314 case id<StarExp_t>(): { 7314 case id<StarExp_t>(): {
7315 if (!varConstAfter.empty()) {
7316 varConstAfter.clear();
7317 }
7315 auto star_exp = static_cast<StarExp_t*>(loopTarget); 7318 auto star_exp = static_cast<StarExp_t*>(loopTarget);
7316 auto listVar = singleVariableFrom(star_exp->value, AccessType::Read); 7319 auto listVar = singleVariableFrom(star_exp->value, AccessType::Read);
7317 if (!isLocal(listVar)) listVar.clear(); 7320 if (!isLocal(listVar)) listVar.clear();