You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-08 12:40:44 +00:00
GDScript: do not warn of return value discarded for super() inside _init()
DO NOT BATCH MERGE WITH #77324, WILL RESULT IN BROKEN CI Currently, calling super() inside _init() throws a RETURN_VALUE_DISCARDED warning. The analyzer identifies super() as being a constructor, which therefore returns an object of the relevant class. However, super() isn't really a constructor by itself: in this case, it is _part_ of the constructor, and so doesn't "return" a value. A test case for this is already in #77324, which contains the warning. I am duplicating it here, without the warning, and it should conflict with the other PR.
This commit is contained in:
@@ -3122,7 +3122,8 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
if (p_is_root && return_type.kind != GDScriptParser::DataType::UNRESOLVED && return_type.builtin_type != Variant::NIL) {
|
if (p_is_root && return_type.kind != GDScriptParser::DataType::UNRESOLVED && return_type.builtin_type != Variant::NIL &&
|
||||||
|
!(p_call->is_super && p_call->function_name == GDScriptLanguage::get_singleton()->strings._init)) {
|
||||||
parser->push_warning(p_call, GDScriptWarning::RETURN_VALUE_DISCARDED, p_call->function_name);
|
parser->push_warning(p_call, GDScriptWarning::RETURN_VALUE_DISCARDED, p_call->function_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4710,7 +4711,7 @@ bool GDScriptAnalyzer::get_function_signature(GDScriptParser::Node *p_source, bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (p_is_constructor) {
|
if (p_is_constructor) {
|
||||||
function_name = "_init";
|
function_name = GDScriptLanguage::get_singleton()->strings._init;
|
||||||
r_static = true;
|
r_static = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
class TestOne:
|
||||||
|
func _init():
|
||||||
|
pass
|
||||||
|
|
||||||
|
class TestTwo extends TestOne:
|
||||||
|
func _init():
|
||||||
|
super()
|
||||||
|
|
||||||
|
func test():
|
||||||
|
pass
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
GDTEST_OK
|
||||||
Reference in New Issue
Block a user