Skip to content

Commit

Permalink
GDScript: Fix groups and categories been seen as members
Browse files Browse the repository at this point in the history
  • Loading branch information
vnen committed Feb 24, 2023
1 parent e0de357 commit 6f2a843
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
6 changes: 5 additions & 1 deletion modules/gdscript/gdscript_compiler.cpp
Expand Up @@ -211,6 +211,10 @@ static bool _can_use_ptrcall(const MethodBind *p_method, const Vector<GDScriptCo
return true;
}

inline static bool is_category_or_group(const PropertyInfo &p_info) {
return p_info.usage & PROPERTY_USAGE_CATEGORY || p_info.usage & PROPERTY_USAGE_GROUP || p_info.usage & PROPERTY_USAGE_SUBGROUP;
}

GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &codegen, Error &r_error, const GDScriptParser::ExpressionNode *p_expression, bool p_root, bool p_initializer, const GDScriptCodeGenerator::Address &p_index_addr) {
if (p_expression->is_constant && !(p_expression->get_datatype().is_meta_type && p_expression->get_datatype().kind == GDScriptParser::DataType::CLASS)) {
return codegen.add_constant(p_expression->reduced_value);
Expand Down Expand Up @@ -246,7 +250,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
// Try members.
if (!codegen.function_node || !codegen.function_node->is_static) {
// Try member variables.
if (codegen.script->member_indices.has(identifier)) {
if (codegen.script->member_indices.has(identifier) && !is_category_or_group(codegen.script->member_info[identifier])) {
if (codegen.script->member_indices[identifier].getter != StringName() && codegen.script->member_indices[identifier].getter != codegen.function_name) {
// Perform getter.
GDScriptCodeGenerator::Address temp = codegen.add_temporary(codegen.script->member_indices[identifier].data_type);
Expand Down
@@ -0,0 +1,9 @@
# https://github.com/godotengine/godot/issues/73843
extends RefCounted

@export_group("Resource")
@export_category("RefCounted")

func test():
prints("Not shadowed", Resource.new())
prints("Not shadowed", RefCounted.new())
@@ -0,0 +1,3 @@
GDTEST_OK
Not shadowed <Resource#-9223371975785708326>
Not shadowed <RefCounted#-9223371975768931110>

0 comments on commit 6f2a843

Please sign in to comment.