parent
c0ece451e3
commit
b93b7aca74
|
@ -4045,7 +4045,13 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_OPEN) {
|
||||
|
||||
tokenizer->advance();
|
||||
#define _ADVANCE_AND_CONSUME_NEWLINES \
|
||||
do { \
|
||||
tokenizer->advance(); \
|
||||
} while (tokenizer->get_token() == GDScriptTokenizer::TK_NEWLINE)
|
||||
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
parenthesis++;
|
||||
|
||||
String hint_prefix = "";
|
||||
bool is_arrayed = false;
|
||||
|
@ -4075,11 +4081,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
current_export.type = type;
|
||||
current_export.usage |= PROPERTY_USAGE_SCRIPT_VARIABLE;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) {
|
||||
// hint expected next!
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
switch (type) {
|
||||
|
||||
|
@ -4087,7 +4093,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "FLAGS") {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
WARN_DEPRECATED_MSG("Exporting bit flags hint requires string constants.");
|
||||
|
@ -4099,7 +4105,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
|
||||
current_export.hint = PROPERTY_HINT_FLAGS;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
bool first = true;
|
||||
while (true) {
|
||||
|
@ -4118,7 +4124,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
current_export.hint_string += c.xml_escape();
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE)
|
||||
break;
|
||||
|
||||
|
@ -4127,7 +4133,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
_set_error("Expected \")\" or \",\" in the named bit flags hint.");
|
||||
return;
|
||||
}
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -4135,7 +4141,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_2D_RENDER") {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
_set_error("Expected \")\" in the layers 2D render hint.");
|
||||
return;
|
||||
|
@ -4146,7 +4152,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_2D_PHYSICS") {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
_set_error("Expected \")\" in the layers 2D physics hint.");
|
||||
return;
|
||||
|
@ -4157,7 +4163,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_3D_RENDER") {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
_set_error("Expected \")\" in the layers 3D render hint.");
|
||||
return;
|
||||
|
@ -4168,7 +4174,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "LAYERS_3D_PHYSICS") {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
_set_error("Expected \")\" in the layers 3D physics hint.");
|
||||
return;
|
||||
|
@ -4198,7 +4204,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
current_export.hint_string += c.xml_escape();
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE)
|
||||
break;
|
||||
|
||||
|
@ -4208,7 +4214,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -4220,7 +4226,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "EASE") {
|
||||
current_export.hint = PROPERTY_HINT_EXP_EASING;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
_set_error("Expected \")\" in the hint.");
|
||||
return;
|
||||
|
@ -4232,7 +4238,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "EXP") {
|
||||
|
||||
current_export.hint = PROPERTY_HINT_EXP_RANGE;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE)
|
||||
break;
|
||||
|
@ -4240,7 +4246,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
_set_error("Expected \")\" or \",\" in the exponential range hint.");
|
||||
return;
|
||||
}
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
} else
|
||||
current_export.hint = PROPERTY_HINT_RANGE;
|
||||
|
||||
|
@ -4248,7 +4254,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_OP_SUB) {
|
||||
sign = -1;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
}
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_CONSTANT || !tokenizer->get_token_constant().is_num()) {
|
||||
|
||||
|
@ -4258,7 +4264,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
|
||||
current_export.hint_string = rtos(sign * double(tokenizer->get_token_constant()));
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
current_export.hint_string = "0," + current_export.hint_string;
|
||||
|
@ -4272,12 +4278,12 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
sign = 1.0;
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_OP_SUB) {
|
||||
sign = -1;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
}
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_CONSTANT || !tokenizer->get_token_constant().is_num()) {
|
||||
|
@ -4288,7 +4294,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
|
||||
current_export.hint_string += "," + rtos(sign * double(tokenizer->get_token_constant()));
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE)
|
||||
break;
|
||||
|
@ -4300,11 +4306,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
sign = 1.0;
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_OP_SUB) {
|
||||
sign = -1;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
}
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_CONSTANT || !tokenizer->get_token_constant().is_num()) {
|
||||
|
@ -4315,7 +4321,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
}
|
||||
|
||||
current_export.hint_string += "," + rtos(sign * double(tokenizer->get_token_constant()));
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
} break;
|
||||
case Variant::STRING: {
|
||||
|
@ -4340,7 +4346,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
first = false;
|
||||
|
||||
current_export.hint_string += c.xml_escape();
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE)
|
||||
break;
|
||||
|
||||
|
@ -4349,7 +4355,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
_set_error("Expected \")\" or \",\" in the enumeration hint.");
|
||||
return;
|
||||
}
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -4357,13 +4363,13 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "DIR") {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE)
|
||||
current_export.hint = PROPERTY_HINT_DIR;
|
||||
else if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_IDENTIFIER || !(tokenizer->get_token_identifier() == "GLOBAL")) {
|
||||
_set_error("Expected \"GLOBAL\" after comma in the directory hint.");
|
||||
|
@ -4374,7 +4380,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
current_export.hint = PROPERTY_HINT_GLOBAL_DIR;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
_set_error("Expected \")\" in the hint.");
|
||||
|
@ -4390,11 +4396,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "FILE") {
|
||||
|
||||
current_export.hint = PROPERTY_HINT_FILE;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) {
|
||||
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "GLOBAL") {
|
||||
|
||||
|
@ -4403,12 +4409,12 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
current_export.hint = PROPERTY_HINT_GLOBAL_FILE;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_PARENTHESIS_CLOSE)
|
||||
break;
|
||||
else if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA)
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
else {
|
||||
_set_error("Expected \")\" or \",\" in the hint.");
|
||||
return;
|
||||
|
@ -4424,7 +4430,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
current_export.hint_string = tokenizer->get_token_constant();
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
}
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
|
@ -4437,7 +4443,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "MULTILINE") {
|
||||
|
||||
current_export.hint = PROPERTY_HINT_MULTILINE_TEXT;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PARENTHESIS_CLOSE) {
|
||||
_set_error("Expected \")\" in the hint.");
|
||||
return;
|
||||
|
@ -4464,7 +4470,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
_set_error("Color type hint expects RGB or RGBA as hints.");
|
||||
return;
|
||||
}
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
} break;
|
||||
default: {
|
||||
|
@ -4515,11 +4521,11 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
bool is_flags = false;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) {
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
|
||||
if (tokenizer->get_token() == GDScriptTokenizer::TK_IDENTIFIER && tokenizer->get_token_identifier() == "FLAGS") {
|
||||
is_flags = true;
|
||||
tokenizer->advance();
|
||||
_ADVANCE_AND_CONSUME_NEWLINES;
|
||||
} else {
|
||||
current_export = PropertyInfo();
|
||||
_set_error("Expected \"FLAGS\" after comma.");
|
||||
|
@ -4563,6 +4569,9 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
return;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
parenthesis--;
|
||||
|
||||
if (is_arrayed) {
|
||||
hint_prefix += itos(current_export.type);
|
||||
if (current_export.hint) {
|
||||
|
@ -4572,8 +4581,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) {
|
|||
current_export.hint = PROPERTY_HINT_TYPE_STRING;
|
||||
current_export.type = Variant::ARRAY;
|
||||
}
|
||||
|
||||
tokenizer->advance();
|
||||
#undef _ADVANCE_AND_CONSUME_NEWLINES
|
||||
}
|
||||
|
||||
if (tokenizer->get_token() != GDScriptTokenizer::TK_PR_VAR && tokenizer->get_token() != GDScriptTokenizer::TK_PR_ONREADY && tokenizer->get_token() != GDScriptTokenizer::TK_PR_REMOTE && tokenizer->get_token() != GDScriptTokenizer::TK_PR_MASTER && tokenizer->get_token() != GDScriptTokenizer::TK_PR_PUPPET && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_REMOTESYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_MASTERSYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_PUPPETSYNC && tokenizer->get_token() != GDScriptTokenizer::TK_PR_SLAVE) {
|
||||
|
|
Loading…
Reference in New Issue