Explorar o código

Merge pull request #104509 from HolonProduction/completion-super-method

GDScript: Return early when parsing invalid super call
Thaddeus Crews hai 5 meses
pai
achega
c687e4f692

+ 5 - 1
modules/gdscript/gdscript_parser.cpp

@@ -3301,7 +3301,11 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_call(ExpressionNode *p_pre
 			IdentifierNode *identifier = parse_identifier();
 			call->callee = identifier;
 			call->function_name = identifier->name;
-			consume(GDScriptTokenizer::Token::PARENTHESIS_OPEN, R"(Expected "(" after function name.)");
+			if (!consume(GDScriptTokenizer::Token::PARENTHESIS_OPEN, R"(Expected "(" after function name.)")) {
+				pop_multiline();
+				complete_extents(call);
+				return nullptr;
+			}
 		}
 	} else {
 		call->callee = p_previous_operand;

+ 5 - 0
modules/gdscript/tests/scripts/completion/common/invalid_super_call_1.cfg

@@ -0,0 +1,5 @@
+[output]
+include=[
+    ; GDScript: class_a.notest.gd
+    {"display": "func_of_a()"},
+]

+ 7 - 0
modules/gdscript/tests/scripts/completion/common/invalid_super_call_1.gd

@@ -0,0 +1,7 @@
+extends "res://completion/class_a.notest.gd"
+
+func test():
+	super.➡
+
+	if true:
+		pass

+ 5 - 0
modules/gdscript/tests/scripts/completion/common/invalid_super_call_2.cfg

@@ -0,0 +1,5 @@
+[output]
+include=[
+    ; GDScript: class_a.notest.gd
+    {"display": "func_of_a()"},
+]

+ 7 - 0
modules/gdscript/tests/scripts/completion/common/invalid_super_call_2.gd

@@ -0,0 +1,7 @@
+extends "res://completion/class_a.notest.gd"
+
+func test():
+	super.f➡
+
+	if true:
+		pass