Procházet zdrojové kódy

Merge pull request #52706 from vnen/gdscript-ternary-operator-crash

GDScript: Show error when missing expression after ternary else
Rémi Verschelde před 4 roky
rodič
revize
a4187c9235

+ 4 - 0
modules/gdscript/gdscript_parser.cpp

@@ -2287,6 +2287,10 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_ternary_operator(Expressio
 
 	operation->false_expr = parse_precedence(PREC_TERNARY, false);
 
+	if (operation->false_expr == nullptr) {
+		push_error(R"(Expected expression after "else".)");
+	}
+
 	return operation;
 }
 

+ 4 - 0
modules/gdscript/tests/scripts/parser/errors/missing_expression_after_ternary_else.gd

@@ -0,0 +1,4 @@
+func test():
+	var x = 1 if false else
+	print("oops")
+	print(x)

+ 2 - 0
modules/gdscript/tests/scripts/parser/errors/missing_expression_after_ternary_else.out

@@ -0,0 +1,2 @@
+GDTEST_PARSER_ERROR
+Expected expression after "else".