mirror of
https://github.com/godotengine/godot.git
synced 2025-10-25 10:44:26 +00:00
GDScript: add an optional message parameter to assert()
Before this patch, assert() only took the condition to assert on:
assert(item_data)
Now, it can optionally take a string that will be printed upon failure:
assert(item_data, item_name + " has no item data in ItemDatabase")
This makes it easier to immediately see what the issue is by being
able to write informative failure messages.
Thanks to @wiped1 for sharing their patch, upon which this is based.
Closes #17082
This commit is contained in:
parent
750f8d4926
commit
aa8e3e7b0f
4 changed files with 50 additions and 11 deletions
|
|
@ -3280,15 +3280,36 @@ void GDScriptParser::_parse_block(BlockNode *p_block, bool p_static) {
|
|||
case GDScriptTokenizer::TK_PR_ASSERT: {
|
||||
|
||||
tokenizer->advance();
|
||||
Node *condition = _parse_and_reduce_expression(p_block, p_static);
|
||||
if (!condition) {
|
||||
if (_recover_from_completion()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_OPEN) {
|
||||
_set_error("Expected '(' after assert");
|
||||
return;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
|
||||
Vector<Node *> args;
|
||||
const bool result = _parse_arguments(p_block, args, p_static);
|
||||
if (!result) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.empty() || args.size() > 2) {
|
||||
_set_error("Wrong number of arguments, expected 1 or 2");
|
||||
return;
|
||||
}
|
||||
|
||||
AssertNode *an = alloc_node<AssertNode>();
|
||||
an->condition = condition;
|
||||
an->condition = _reduce_expression(args[0], p_static);
|
||||
|
||||
if (args.size() == 2) {
|
||||
an->message = _reduce_expression(args[1], p_static);
|
||||
} else {
|
||||
ConstantNode *message_node = alloc_node<ConstantNode>();
|
||||
message_node->value = String();
|
||||
an->message = message_node;
|
||||
}
|
||||
|
||||
p_block->statements.push_back(an);
|
||||
|
||||
if (!_end_statement()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue