diff options
| author | Li Jin <dragon-fly@qq.com> | 2022-07-28 14:45:31 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2022-07-28 14:45:31 +0800 |
| commit | c1a599fccfd3c37ad2afc743b2a49cc5290fcb9f (patch) | |
| tree | ece02d19a99c1a2038141892ae14a69097a0eb75 /src/yuescript/yue_compiler.cpp | |
| parent | 1510038121252bd106b90e5f60b3c42978e3a572 (diff) | |
| download | yuescript-c1a599fccfd3c37ad2afc743b2a49cc5290fcb9f.tar.gz yuescript-c1a599fccfd3c37ad2afc743b2a49cc5290fcb9f.tar.bz2 yuescript-c1a599fccfd3c37ad2afc743b2a49cc5290fcb9f.zip | |
add missing operator checks for update assignment.
Diffstat (limited to '')
| -rwxr-xr-x | src/yuescript/yue_compiler.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 1a389b0..6213631 100755 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp | |||
| @@ -2431,6 +2431,7 @@ private: | |||
| 2431 | chain->items.clear(); | 2431 | chain->items.clear(); |
| 2432 | chain->items.dup(tmpChain->items); | 2432 | chain->items.dup(tmpChain->items); |
| 2433 | auto op = _parser.toString(update->op); | 2433 | auto op = _parser.toString(update->op); |
| 2434 | checkOperatorAvailable(op, update->op); | ||
| 2434 | if (op == "??"sv) { | 2435 | if (op == "??"sv) { |
| 2435 | auto defs = getPreDefineLine(assignment); | 2436 | auto defs = getPreDefineLine(assignment); |
| 2436 | temp.push_back(defs); | 2437 | temp.push_back(defs); |
| @@ -5802,8 +5803,7 @@ private: | |||
| 5802 | out.push_back(join(temp)); | 5803 | out.push_back(join(temp)); |
| 5803 | } | 5804 | } |
| 5804 | 5805 | ||
| 5805 | void transformBinaryOperator(BinaryOperator_t* node, str_list& out) { | 5806 | void checkOperatorAvailable(const std::string& op, ast_node* node) { |
| 5806 | auto op = _parser.toString(node); | ||
| 5807 | if (op == "&"sv || | 5807 | if (op == "&"sv || |
| 5808 | op == "~"sv || | 5808 | op == "~"sv || |
| 5809 | op == "|"sv || | 5809 | op == "|"sv || |
| @@ -5817,6 +5817,11 @@ private: | |||
| 5817 | throw std::logic_error(_info.errorMessage("floor division is not available when not targeting Lua version 5.3 or higher"sv, node)); | 5817 | throw std::logic_error(_info.errorMessage("floor division is not available when not targeting Lua version 5.3 or higher"sv, node)); |
| 5818 | } | 5818 | } |
| 5819 | } | 5819 | } |
| 5820 | } | ||
| 5821 | |||
| 5822 | void transformBinaryOperator(BinaryOperator_t* node, str_list& out) { | ||
| 5823 | auto op = _parser.toString(node); | ||
| 5824 | checkOperatorAvailable(op, node); | ||
| 5820 | out.push_back(op == "!="sv ? "~="s : op); | 5825 | out.push_back(op == "!="sv ? "~="s : op); |
| 5821 | } | 5826 | } |
| 5822 | 5827 | ||
