Ver Fonte

Merge pull request #49114 from vnen/gdscript-fix-self-function-type-check

GDScript: Fix function signature check for self calls
Rémi Verschelde há 4 anos atrás
pai
commit
364ea7f280

+ 2 - 0
modules/gdscript/gdscript_analyzer.cpp

@@ -2068,9 +2068,11 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool is_awa
 
 	if (p_call->is_super) {
 		base_type = parser->current_class->base_type;
+		base_type.is_meta_type = false;
 		is_self = true;
 	} else if (callee_type == GDScriptParser::Node::IDENTIFIER) {
 		base_type = parser->current_class->get_datatype();
+		base_type.is_meta_type = false;
 		is_self = true;
 	} else if (callee_type == GDScriptParser::Node::SUBSCRIPT) {
 		GDScriptParser::SubscriptNode *subscript = static_cast<GDScriptParser::SubscriptNode *>(p_call->callee);

+ 9 - 0
modules/gdscript/tests/scripts/analyzer/features/call_self_get_name.gd

@@ -0,0 +1,9 @@
+extends Node
+
+func test():
+	set_name("TestNodeName")
+	if get_name() == &"TestNodeName":
+		print("Name is equal")
+	else:
+		print("Name is not equal")
+	print(get_name() is StringName)

+ 3 - 0
modules/gdscript/tests/scripts/analyzer/features/call_self_get_name.out

@@ -0,0 +1,3 @@
+GDTEST_OK
+Name is equal
+True