diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-01-03 12:20:33 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-01-03 12:20:33 +0100 |
commit | e4c1103af49b27dde003a03a8ac20aaa33495bd4 (patch) | |
tree | d47c07c3be87409bdaddf1a0d96aa1ff7588c452 /modules/gdscript/gdscript_analyzer.cpp | |
parent | 6d7f6c1eb9ca2eb3c94a91f8c5497577997de03a (diff) | |
parent | 9507f65e25fd02b1e5817b787afdbef334b964e7 (diff) | |
download | redot-engine-e4c1103af49b27dde003a03a8ac20aaa33495bd4.tar.gz |
Merge pull request #70656 from vonagam/fix-void-returns
GDScript: Disallow return with value in void functions
Diffstat (limited to 'modules/gdscript/gdscript_analyzer.cpp')
-rw-r--r-- | modules/gdscript/gdscript_analyzer.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 1556957074..6e2c3193cd 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -2047,6 +2047,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. |