mirror of
https://github.com/godotengine/godot.git
synced 2024-12-01 16:42:26 +00:00
GDScript: Show error on unary operators without argument
This commit is contained in:
parent
5a612d61b9
commit
d49046938a
@ -2123,22 +2123,34 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_unary_operator(ExpressionN
|
||||
operation->operation = UnaryOpNode::OP_NEGATIVE;
|
||||
operation->variant_op = Variant::OP_NEGATE;
|
||||
operation->operand = parse_precedence(PREC_SIGN, false);
|
||||
if (operation->operand == nullptr) {
|
||||
push_error(R"(Expected expression after "-" operator.)");
|
||||
}
|
||||
break;
|
||||
case GDScriptTokenizer::Token::PLUS:
|
||||
operation->operation = UnaryOpNode::OP_POSITIVE;
|
||||
operation->variant_op = Variant::OP_POSITIVE;
|
||||
operation->operand = parse_precedence(PREC_SIGN, false);
|
||||
if (operation->operand == nullptr) {
|
||||
push_error(R"(Expected expression after "+" operator.)");
|
||||
}
|
||||
break;
|
||||
case GDScriptTokenizer::Token::TILDE:
|
||||
operation->operation = UnaryOpNode::OP_COMPLEMENT;
|
||||
operation->variant_op = Variant::OP_BIT_NEGATE;
|
||||
operation->operand = parse_precedence(PREC_BIT_NOT, false);
|
||||
if (operation->operand == nullptr) {
|
||||
push_error(R"(Expected expression after "~" operator.)");
|
||||
}
|
||||
break;
|
||||
case GDScriptTokenizer::Token::NOT:
|
||||
case GDScriptTokenizer::Token::BANG:
|
||||
operation->operation = UnaryOpNode::OP_LOGIC_NOT;
|
||||
operation->variant_op = Variant::OP_NOT;
|
||||
operation->operand = parse_precedence(PREC_LOGIC_NOT, false);
|
||||
if (operation->operand == nullptr) {
|
||||
push_error(vformat(R"(Expected expression after "%s" operator.)", op_type == GDScriptTokenizer::Token::NOT ? "not" : "!"));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return nullptr; // Unreachable.
|
||||
|
@ -0,0 +1,2 @@
|
||||
func test():
|
||||
print(~)
|
@ -0,0 +1,2 @@
|
||||
GDTEST_PARSER_ERROR
|
||||
Expected expression after "~" operator.
|
@ -0,0 +1,2 @@
|
||||
func test():
|
||||
print(not)
|
@ -0,0 +1,2 @@
|
||||
GDTEST_PARSER_ERROR
|
||||
Expected expression after "not" operator.
|
@ -0,0 +1,2 @@
|
||||
func test():
|
||||
print(!)
|
@ -0,0 +1,2 @@
|
||||
GDTEST_PARSER_ERROR
|
||||
Expected expression after "!" operator.
|
@ -0,0 +1,3 @@
|
||||
func test():
|
||||
var a = 0
|
||||
print(a--)
|
@ -0,0 +1,2 @@
|
||||
GDTEST_PARSER_ERROR
|
||||
Expected expression after "-" operator.
|
@ -0,0 +1,3 @@
|
||||
func test():
|
||||
var a = 0
|
||||
print(a++)
|
@ -0,0 +1,2 @@
|
||||
GDTEST_PARSER_ERROR
|
||||
Expected expression after "+" operator.
|
Loading…
Reference in New Issue
Block a user