From 7291098ca8f65658eb4f6b502e8b94071474b701 Mon Sep 17 00:00:00 2001 From: Li Jin <dragon-fly@qq.com> Date: Tue, 28 Jan 2020 01:45:49 +0800 Subject: fix empty Body issue. --- src/MoonP/moon_compiler.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/MoonP/moon_compiler.cpp b/src/MoonP/moon_compiler.cpp index f18fb16..0028f22 100644 --- a/src/MoonP/moon_compiler.cpp +++ b/src/MoonP/moon_compiler.cpp @@ -389,14 +389,14 @@ private: if (auto stmt = body->content.as<Statement_t>()) { return stmt; } else { - auto node = body->content.to<Block_t>()->statements.objects().back(); - return static_cast<Statement_t*>(node); + const auto& stmts = body->content.to<Block_t>()->statements.objects(); + return stmts.empty() ? nullptr : static_cast<Statement_t*>(stmts.back()); } } Statement_t* lastStatementFrom(Block_t* block) { - auto node = block->statements.objects().back(); - return static_cast<Statement_t*>(node); + const auto& stmts = block->statements.objects(); + return stmts.empty() ? nullptr : static_cast<Statement_t*>(stmts.back()); } template <class T> @@ -3824,8 +3824,8 @@ private: transformAssignment(assignment, temp); } if (returnValue) { - auto stmt = lastStatementFrom(with->body); - if (!stmt->content.is<Return_t>()) { + auto last = lastStatementFrom(with->body); + if (last && !last->content.is<Return_t>()) { temp.push_back(indent() + s("return "sv) + withVar + nll(with)); } } -- cgit v1.2.3-55-g6feb