Skip to content

Commit

Permalink
Merge pull request #70655 from vonagam/fix-assert-multiline
Browse files Browse the repository at this point in the history
GDScript: Fix multiline and trailing comma for assert
  • Loading branch information
akien-mga committed Jan 9, 2023
2 parents 8894057 + 71f7c8a commit c2f7c2d
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
9 changes: 7 additions & 2 deletions modules/gdscript/gdscript_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1799,24 +1799,29 @@ GDScriptParser::AssertNode *GDScriptParser::parse_assert() {
// TODO: Add assert message.
AssertNode *assert = alloc_node<AssertNode>();

push_multiline(true);
consume(GDScriptTokenizer::Token::PARENTHESIS_OPEN, R"(Expected "(" after "assert".)");

assert->condition = parse_expression(false);
if (assert->condition == nullptr) {
push_error("Expected expression to assert.");
pop_multiline();
complete_extents(assert);
return nullptr;
}

if (match(GDScriptTokenizer::Token::COMMA)) {
// Error message.
if (match(GDScriptTokenizer::Token::COMMA) && !check(GDScriptTokenizer::Token::PARENTHESIS_CLOSE)) {
assert->message = parse_expression(false);
if (assert->message == nullptr) {
push_error(R"(Expected error message for assert after ",".)");
pop_multiline();
complete_extents(assert);
return nullptr;
}
match(GDScriptTokenizer::Token::COMMA);
}

pop_multiline();
consume(GDScriptTokenizer::Token::PARENTHESIS_CLOSE, R"*(Expected ")" after assert expression.)*");

complete_extents(assert);
Expand Down
24 changes: 24 additions & 0 deletions modules/gdscript/tests/scripts/parser/features/multiline_assert.gd
Original file line number Diff line number Diff line change
@@ -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')
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
GDTEST_OK
OK

0 comments on commit c2f7c2d

Please sign in to comment.