Selaa lähdekoodia

GDScript: Fix `if` after lambda being seen as ternary

George Marques 3 vuotta sitten
vanhempi
commit
969f1980d2

+ 1 - 1
modules/gdscript/gdscript_parser.cpp

@@ -2103,7 +2103,7 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_precedence(Precedence p_pr
 	ExpressionNode *previous_operand = (this->*prefix_rule)(nullptr, p_can_assign);
 	ExpressionNode *previous_operand = (this->*prefix_rule)(nullptr, p_can_assign);
 
 
 	while (p_precedence <= get_rule(current.type)->precedence) {
 	while (p_precedence <= get_rule(current.type)->precedence) {
-		if (previous_operand == nullptr || (p_stop_on_assign && current.type == GDScriptTokenizer::Token::EQUAL)) {
+		if (previous_operand == nullptr || (p_stop_on_assign && current.type == GDScriptTokenizer::Token::EQUAL) || (previous_operand->type == Node::LAMBDA && lambda_ended)) {
 			return previous_operand;
 			return previous_operand;
 		}
 		}
 		// Also switch multiline mode on here for infix operators.
 		// Also switch multiline mode on here for infix operators.

+ 7 - 0
modules/gdscript/tests/scripts/parser/features/if_after_lambda.gd

@@ -0,0 +1,7 @@
+# https://github.com/godotengine/godot/issues/61231
+
+func test():
+	var my_lambda = func():
+		print("hello")
+	if 0 == 0:
+		my_lambda.call()

+ 2 - 0
modules/gdscript/tests/scripts/parser/features/if_after_lambda.out

@@ -0,0 +1,2 @@
+GDTEST_OK
+hello