|
@@ -8190,25 +8190,27 @@ Error ShaderLanguage::_parse_shader(const HashMap<StringName, FunctionInfo> &p_f
|
|
|
};
|
|
|
[[fallthrough]];
|
|
|
case TK_INSTANCE: {
|
|
|
+ if (tk.type == TK_INSTANCE) {
|
|
|
#ifdef DEBUG_ENABLED
|
|
|
- keyword_completion_context = CF_UNIFORM_KEYWORD;
|
|
|
- if (_lookup_next(next)) {
|
|
|
- if (next.type == TK_UNIFORM) {
|
|
|
- keyword_completion_context ^= CF_UNIFORM_KEYWORD;
|
|
|
+ keyword_completion_context = CF_UNIFORM_KEYWORD;
|
|
|
+ if (_lookup_next(next)) {
|
|
|
+ if (next.type == TK_UNIFORM) {
|
|
|
+ keyword_completion_context ^= CF_UNIFORM_KEYWORD;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
#endif // DEBUG_ENABLED
|
|
|
- if (String(shader_type_identifier) != "spatial") {
|
|
|
- _set_error(vformat(RTR("Uniform instances are not yet implemented for '%s' shaders."), shader_type_identifier));
|
|
|
- return ERR_PARSE_ERROR;
|
|
|
- }
|
|
|
- if (uniform_scope == ShaderNode::Uniform::SCOPE_LOCAL) {
|
|
|
- tk = _get_token();
|
|
|
- if (tk.type != TK_UNIFORM) {
|
|
|
- _set_expected_after_error("uniform", "instance");
|
|
|
+ if (String(shader_type_identifier) != "spatial") {
|
|
|
+ _set_error(vformat(RTR("Uniform instances are not yet implemented for '%s' shaders."), shader_type_identifier));
|
|
|
return ERR_PARSE_ERROR;
|
|
|
}
|
|
|
- uniform_scope = ShaderNode::Uniform::SCOPE_INSTANCE;
|
|
|
+ if (uniform_scope == ShaderNode::Uniform::SCOPE_LOCAL) {
|
|
|
+ tk = _get_token();
|
|
|
+ if (tk.type != TK_UNIFORM) {
|
|
|
+ _set_expected_after_error("uniform", "instance");
|
|
|
+ return ERR_PARSE_ERROR;
|
|
|
+ }
|
|
|
+ uniform_scope = ShaderNode::Uniform::SCOPE_INSTANCE;
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
[[fallthrough]];
|