From 2847a5ea5be44b4607eea15d22955b5cf656f8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Grodzi=C5=84ski?= Date: Mon, 23 Jun 2025 18:51:20 +0900 Subject: [PATCH] Default return statement for function declaration --- src/Parser/Statement/StatementFunction.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Parser/Statement/StatementFunction.cpp b/src/Parser/Statement/StatementFunction.cpp index c6f4811..d6a6f9f 100644 --- a/src/Parser/Statement/StatementFunction.cpp +++ b/src/Parser/Statement/StatementFunction.cpp @@ -1,6 +1,7 @@ #include "StatementFunction.h" #include "Parser/Statement/StatementBlock.h" +#include "Parser/Statement/StatementReturn.h" static string valueTypeToString(ValueType valueType) { switch (valueType) { @@ -16,7 +17,16 @@ static string valueTypeToString(ValueType valueType) { } StatementFunction::StatementFunction(string name, vector> arguments, ValueType returnValueType, shared_ptr statementBlock): -Statement(StatementKind::FUNCTION), name(name), arguments(arguments), returnValueType(returnValueType), statementBlock(statementBlock) { } +Statement(StatementKind::FUNCTION), name(name), arguments(arguments), returnValueType(returnValueType), statementBlock(statementBlock) { + vector> statements = statementBlock->getStatements(); + if (!statements.empty() && statements.back()->getKind() == StatementKind::RETURN) + return; + + // add an emty return statement if none is present + shared_ptr statementReturn = make_shared(nullptr); + statements.push_back(statementReturn); + this->statementBlock = make_shared(statements); +} string StatementFunction::getName() { return name;