diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2021-11-30 23:28:35 +0300 |
---|---|---|
committer | Yuri Roubinsky <chaosus89@gmail.com> | 2021-12-01 11:52:25 +0300 |
commit | 5ba93619fae4eedca092bd7e4551b9034d725ff4 (patch) | |
tree | 3ef72ca65c8d243298a681d5be5eb3d99ff15e63 /servers/rendering/shader_language.cpp | |
parent | e223a9c12905b99bb1fe93a56ae634b34eadd359 (diff) | |
download | redot-engine-5ba93619fae4eedca092bd7e4551b9034d725ff4.tar.gz |
Allow using empty statements in the shader, added formatting warning
Diffstat (limited to 'servers/rendering/shader_language.cpp')
-rw-r--r-- | servers/rendering/shader_language.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index 8dd939ffd7..7149d38641 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -5208,9 +5208,21 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons expression.push_back(e); continue; } else { - _set_error("Expected expression, found: " + get_token_text(tk)); - return nullptr; - //nothing + if (tk.type != TK_SEMICOLON) { + _set_error("Expected expression, found: " + get_token_text(tk)); + return nullptr; + } else { +#if DEBUG_ENABLED + if (check_warnings && HAS_WARNING(ShaderWarning::FORMATTING_ERROR_FLAG)) { + _add_line_warning(ShaderWarning::FORMATTING_ERROR, "Empty statement. Remove ';' to fix this warning."); + } +#endif // DEBUG_ENABLED + _set_tkpos(prepos); + + OperatorNode *func = alloc_node<OperatorNode>(); + func->op = OP_EMPTY; + expr = func; + } } ERR_FAIL_COND_V(!expr, nullptr); |