diff options
author | Li Jin <dragon-fly@qq.com> | 2024-04-03 16:28:36 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2024-04-03 16:28:36 +0800 |
commit | 6b204d11ad8426bb179ae3be1e71d30f08e3b375 (patch) | |
tree | 2c62ce37e49f78827d8740c3896e3b152444198f /src | |
parent | 21004f1fb9b2f6129a231a6c8d99179f0d6e3edf (diff) | |
download | yuescript-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.cpp | 5 |
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 | ||
78 | const std::string_view version = "0.23.2"sv; | 78 | const std::string_view version = "0.23.3"sv; |
79 | const std::string_view extension = "yue"sv; | 79 | const std::string_view extension = "yue"sv; |
80 | 80 | ||
81 | class CompileError : public std::logic_error { | 81 | class 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(); |