1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Allow default case at the top of a switch scope in shaders

Revert "Removed translations of unused error message"

This reverts commit 6dbc75e000375196eb0176e65eb41935f71fc4fe.

Variable name change

Detecting multiple default cases in shaders

Removed translations of unused error message

Allowing default case at top of scope in switch statement in shaders
This commit is contained in:
Murrent
2025-02-22 17:00:38 +01:00
parent cc7a951140
commit 4f46ecc479

View File

@@ -8460,9 +8460,11 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
pos = _get_tkpos();
tk = _get_token();
TokenType prev_type;
bool has_default = false;
if (tk.type == TK_CF_CASE || tk.type == TK_CF_DEFAULT) {
prev_type = tk.type;
if (tk.type == TK_CF_DEFAULT) {
has_default = true;
}
_set_tkpos(pos);
} else {
_set_expected_error("case", "default");
@@ -8476,17 +8478,15 @@ Error ShaderLanguage::_parse_block(BlockNode *p_block, const FunctionInfo &p_fun
}
pos = _get_tkpos();
tk = _get_token();
if (tk.type == TK_CF_CASE || tk.type == TK_CF_DEFAULT) {
if (prev_type == TK_CF_DEFAULT) {
if (tk.type == TK_CF_CASE) {
_set_error(RTR("Cases must be defined before default case."));
return ERR_PARSE_ERROR;
} else if (prev_type == TK_CF_DEFAULT) {
_set_error(RTR("Default case must be defined only once."));
return ERR_PARSE_ERROR;
}
if (tk.type == TK_CF_CASE) {
_set_tkpos(pos);
continue;
} else if (tk.type == TK_CF_DEFAULT) {
if (has_default) {
_set_error(RTR("Default case must be defined only once."));
return ERR_PARSE_ERROR;
}
prev_type = tk.type;
has_default = true;
_set_tkpos(pos);
continue;
} else {