Default return statement for function declaration

This commit is contained in:
Rafał Grodziński
2025-06-23 18:51:20 +09:00
parent a8a3b9f880
commit 2847a5ea5b

View File

@@ -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<pair<string, ValueType>> arguments, ValueType returnValueType, shared_ptr<StatementBlock> statementBlock):
Statement(StatementKind::FUNCTION), name(name), arguments(arguments), returnValueType(returnValueType), statementBlock(statementBlock) { }
Statement(StatementKind::FUNCTION), name(name), arguments(arguments), returnValueType(returnValueType), statementBlock(statementBlock) {
vector<shared_ptr<Statement>> statements = statementBlock->getStatements();
if (!statements.empty() && statements.back()->getKind() == StatementKind::RETURN)
return;
// add an emty return statement if none is present
shared_ptr<StatementReturn> statementReturn = make_shared<StatementReturn>(nullptr);
statements.push_back(statementReturn);
this->statementBlock = make_shared<StatementBlock>(statements);
}
string StatementFunction::getName() {
return name;