From b668018486572362b7cbba5257baa7a37ef8d01d Mon Sep 17 00:00:00 2001 From: Li Jin Date: Mon, 21 Feb 2022 14:28:40 +0800 Subject: fix a line number reservation issue. --- src/yuescript/yue_compiler.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp index 2b9ebc9..41bf207 100755 --- a/src/yuescript/yue_compiler.cpp +++ b/src/yuescript/yue_compiler.cpp @@ -60,7 +60,7 @@ using namespace parserlib; typedef std::list str_list; -const std::string_view version = "0.10.0"sv; +const std::string_view version = "0.10.1"sv; const std::string_view extension = "yue"sv; class YueCompilerImpl { @@ -6093,11 +6093,19 @@ private: auto x = tryNode; ast_ptr errHandler; if (tryNode->catchBlock) { - auto errHandleStr = "("s + _parser.toString(tryNode->catchBlock->err) + ")->\n"s + _parser.toString(tryNode->catchBlock->body); + auto errHandleStr = "("s + _parser.toString(tryNode->catchBlock->err) + ")->"s; errHandler.set(toAst(errHandleStr, x)); + auto funLit = simpleSingleValueFrom(errHandler)->value.to(); + auto body = x->new_ptr(); + body->content.set(tryNode->catchBlock->body); + funLit->body.set(body); } if (auto tryBlock = tryNode->func.as()) { - auto tryExp = toAst("->\n"s + _parser.toString(tryBlock), x); + auto tryExp = toAst("->"sv, x); + auto funLit = simpleSingleValueFrom(tryExp)->value.to(); + auto body = x->new_ptr(); + body->content.set(tryBlock); + funLit->body.set(body); if (errHandler) { auto xpcall = toAst("xpcall()", x); auto invoke = ast_to(xpcall->items.back()); -- cgit v1.2.3-55-g6feb