summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript_analyzer.cpp
diff options
context:
space:
mode:
authorDmitrii Maganov <vonagam@gmail.com>2022-12-28 07:12:16 +0200
committerDmitrii Maganov <vonagam@gmail.com>2022-12-29 03:06:13 +0200
commit9507f65e25fd02b1e5817b787afdbef334b964e7 (patch)
tree21cd740c8d1c91c20e87b8ca57ef6c9e71796f03 /modules/gdscript/gdscript_analyzer.cpp
parent7e1bd3f95a10acf60e07a8a6518cc80bfee6fbbf (diff)
downloadredot-engine-9507f65e25fd02b1e5817b787afdbef334b964e7.tar.gz
GDScript: Disallow return with value in void functions
Diffstat (limited to 'modules/gdscript/gdscript_analyzer.cpp')
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index fc2e6e94f3..05d19863ca 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -2044,6 +2044,9 @@ void GDScriptAnalyzer::resolve_return(GDScriptParser::ReturnNode *p_return) {
update_array_literal_element_type(expected_type, static_cast<GDScriptParser::ArrayNode *>(p_return->return_value));
}
}
+ if (has_expected_type && expected_type.is_hard_type() && expected_type.kind == GDScriptParser::DataType::BUILTIN && expected_type.builtin_type == Variant::NIL) {
+ push_error("A void function cannot return a value.", p_return);
+ }
result = p_return->return_value->get_datatype();
} else {
// Return type is null by default.