aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2020-11-03 14:21:17 +0800
committerLi Jin <dragon-fly@qq.com>2020-11-03 14:21:17 +0800
commite07a2eb9c389f27103872a3b5a5bfe500d0c2d62 (patch)
treee73abc495faa92bab2d9eee9b89afc89f57d1390 /src
parentc421550a006c6c01ac176a879593a20d51d77c5d (diff)
downloadyuescript-e07a2eb9c389f27103872a3b5a5bfe500d0c2d62.tar.gz
yuescript-e07a2eb9c389f27103872a3b5a5bfe500d0c2d62.tar.bz2
yuescript-e07a2eb9c389f27103872a3b5a5bfe500d0c2d62.zip
fix issue #29
Diffstat (limited to 'src')
-rw-r--r--src/MoonP/moon_compiler.cpp19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/MoonP/moon_compiler.cpp b/src/MoonP/moon_compiler.cpp
index f24441f..138a6bf 100644
--- a/src/MoonP/moon_compiler.cpp
+++ b/src/MoonP/moon_compiler.cpp
@@ -53,7 +53,7 @@ inline std::string s(std::string_view sv) {
53 return std::string(sv); 53 return std::string(sv);
54} 54}
55 55
56const std::string_view version = "0.4.19"sv; 56const std::string_view version = "0.4.20"sv;
57const std::string_view extension = "mp"sv; 57const std::string_view extension = "mp"sv;
58 58
59class MoonCompilerImpl { 59class MoonCompilerImpl {
@@ -3814,17 +3814,16 @@ private:
3814 void transformLoopBody(Body_t* body, str_list& out, const std::string& appendContent, ExpUsage usage, ExpList_t* assignList = nullptr) { 3814 void transformLoopBody(Body_t* body, str_list& out, const std::string& appendContent, ExpUsage usage, ExpList_t* assignList = nullptr) {
3815 str_list temp; 3815 str_list temp;
3816 bool withContinue = traversal::Stop == body->traverse([&](ast_node* node) { 3816 bool withContinue = traversal::Stop == body->traverse([&](ast_node* node) {
3817 switch (node->getId()) { 3817 if (auto stmt = ast_cast<Statement_t>(node)) {
3818 case id<For_t>(): 3818 if (stmt->content.is<BreakLoop_t>()) {
3819 case id<ForEach_t>(): 3819 return _parser.toString(stmt->content) == "continue"sv ?
3820 return traversal::Return; 3820 traversal::Stop : traversal::Return;
3821 case id<BreakLoop_t>(): { 3821 } else if (expListFrom(stmt)) {
3822 return _parser.toString(node) == "continue"sv ?
3823 traversal::Stop : traversal::Return;
3824 }
3825 default:
3826 return traversal::Continue; 3822 return traversal::Continue;
3823 }
3824 return traversal::Return;
3827 } 3825 }
3826 return traversal::Continue;
3828 }); 3827 });
3829 if (withContinue) { 3828 if (withContinue) {
3830 auto continueVar = getUnusedName("_continue_"sv); 3829 auto continueVar = getUnusedName("_continue_"sv);