From 3dd607c8887d2fe0186668aabca31bb84a41e2da Mon Sep 17 00:00:00 2001 From: Li Jin Date: Fri, 21 Oct 2022 10:06:31 +0800 Subject: fix issue #111. --- spec/inputs/cond.yue | 7 +++++++ spec/outputs/cond.lua | 10 ++++++++++ src/yuescript/yue_compiler.cpp | 2 +- src/yuescript/yue_parser.cpp | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/spec/inputs/cond.yue b/spec/inputs/cond.yue index 9981e93..638b5c3 100644 --- a/spec/inputs/cond.yue +++ b/spec/inputs/cond.yue @@ -219,6 +219,13 @@ do :Thing = _M :a, :b = _M +do + v = if 1 and do + 0 ~= 1 + 1 + else + 2 + nil diff --git a/spec/outputs/cond.lua b/spec/outputs/cond.lua index 7764439..1f6aa63 100644 --- a/spec/outputs/cond.lua +++ b/spec/outputs/cond.lua @@ -335,4 +335,14 @@ do end end end +do + local v + if 1 and (function() + return 0 ~= 1 + end)() then + v = 1 + else + v = 2 + end +end return nil diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 2be4498..ff55e0e 100644 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -60,7 +60,7 @@ namespace yue { typedef std::list str_list; -const std::string_view version = "0.15.5"sv; +const std::string_view version = "0.15.6"sv; const std::string_view extension = "yue"sv; class YueCompilerImpl { diff --git a/src/yuescript/yue_parser.cpp b/src/yuescript/yue_parser.cpp index f86afb4..ef700ae 100755 --- a/src/yuescript/yue_parser.cpp +++ b/src/yuescript/yue_parser.cpp @@ -249,7 +249,7 @@ YueParser::YueParser() { >> -Space >> Break >> SwitchBlock; assignment = ExpList >> Assign; - IfCond = disable_do_chain_arg_table_block(assignment | Exp); + IfCond = disable_chain(disable_arg_table_block(assignment | Exp)); IfElseIf = -(Break >> *EmptyLine >> CheckIndent) >> Space >> key("elseif") >> IfCond >> plain_body_with("then"); IfElse = -(Break >> *EmptyLine >> CheckIndent) >> Space >> key("else") >> plain_body; IfType = (expr("if") | expr("unless")) >> not_(AlphaNum); -- cgit v1.2.3-55-g6feb