You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-14 13:41:12 +00:00
Merge pull request #70655 from vonagam/fix-assert-multiline
GDScript: Fix multiline and trailing comma for assert
This commit is contained in:
@@ -1799,24 +1799,29 @@ GDScriptParser::AssertNode *GDScriptParser::parse_assert() {
|
|||||||
// TODO: Add assert message.
|
// TODO: Add assert message.
|
||||||
AssertNode *assert = alloc_node<AssertNode>();
|
AssertNode *assert = alloc_node<AssertNode>();
|
||||||
|
|
||||||
|
push_multiline(true);
|
||||||
consume(GDScriptTokenizer::Token::PARENTHESIS_OPEN, R"(Expected "(" after "assert".)");
|
consume(GDScriptTokenizer::Token::PARENTHESIS_OPEN, R"(Expected "(" after "assert".)");
|
||||||
|
|
||||||
assert->condition = parse_expression(false);
|
assert->condition = parse_expression(false);
|
||||||
if (assert->condition == nullptr) {
|
if (assert->condition == nullptr) {
|
||||||
push_error("Expected expression to assert.");
|
push_error("Expected expression to assert.");
|
||||||
|
pop_multiline();
|
||||||
complete_extents(assert);
|
complete_extents(assert);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match(GDScriptTokenizer::Token::COMMA)) {
|
if (match(GDScriptTokenizer::Token::COMMA) && !check(GDScriptTokenizer::Token::PARENTHESIS_CLOSE)) {
|
||||||
// Error message.
|
|
||||||
assert->message = parse_expression(false);
|
assert->message = parse_expression(false);
|
||||||
if (assert->message == nullptr) {
|
if (assert->message == nullptr) {
|
||||||
push_error(R"(Expected error message for assert after ",".)");
|
push_error(R"(Expected error message for assert after ",".)");
|
||||||
|
pop_multiline();
|
||||||
complete_extents(assert);
|
complete_extents(assert);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
match(GDScriptTokenizer::Token::COMMA);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pop_multiline();
|
||||||
consume(GDScriptTokenizer::Token::PARENTHESIS_CLOSE, R"*(Expected ")" after assert expression.)*");
|
consume(GDScriptTokenizer::Token::PARENTHESIS_CLOSE, R"*(Expected ")" after assert expression.)*");
|
||||||
|
|
||||||
complete_extents(assert);
|
complete_extents(assert);
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
func test():
|
||||||
|
var x := 5
|
||||||
|
|
||||||
|
assert(x > 0)
|
||||||
|
assert(x > 0,)
|
||||||
|
assert(x > 0, 'message')
|
||||||
|
assert(x > 0, 'message',)
|
||||||
|
|
||||||
|
assert(
|
||||||
|
x > 0
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
x > 0,
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
x > 0,
|
||||||
|
'message'
|
||||||
|
)
|
||||||
|
assert(
|
||||||
|
x > 0,
|
||||||
|
'message',
|
||||||
|
)
|
||||||
|
|
||||||
|
print('OK')
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
GDTEST_OK
|
||||||
|
OK
|
||||||
Reference in New Issue
Block a user