Browse Source

Merge pull request #55515 from Chaosus/shader_fix_struct_name

Rémi Verschelde 3 years ago
parent
commit
b9d877e55f
1 changed files with 2 additions and 7 deletions
  1. 2 7
      servers/rendering/shader_language.cpp

+ 2 - 7
servers/rendering/shader_language.cpp

@@ -7502,7 +7502,7 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct
 				tk = _get_token();
 				tk = _get_token();
 				if (tk.type == TK_IDENTIFIER) {
 				if (tk.type == TK_IDENTIFIER) {
 					st.name = tk.text;
 					st.name = tk.text;
-					if (shader->structs.has(st.name)) {
+					if (shader->constants.has(st.name) || shader->structs.has(st.name)) {
 						_set_error("Redefinition of '" + String(st.name) + "'");
 						_set_error("Redefinition of '" + String(st.name) + "'");
 						return ERR_PARSE_ERROR;
 						return ERR_PARSE_ERROR;
 					}
 					}
@@ -8212,12 +8212,7 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct
 					return ERR_PARSE_ERROR;
 					return ERR_PARSE_ERROR;
 				}
 				}
 
 
-				if (_find_identifier(nullptr, false, constants, name)) {
-					_set_error("Redefinition of '" + String(name) + "'");
-					return ERR_PARSE_ERROR;
-				}
-
-				if (has_builtin(p_functions, name)) {
+				if (shader->structs.has(name) || _find_identifier(nullptr, false, constants, name) || has_builtin(p_functions, name)) {
 					_set_error("Redefinition of '" + String(name) + "'");
 					_set_error("Redefinition of '" + String(name) + "'");
 					return ERR_PARSE_ERROR;
 					return ERR_PARSE_ERROR;
 				}
 				}