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