From 6f2a8434c675b3df2aceca4e5200aaf799eeb2bd Mon Sep 17 00:00:00 2001 From: George Marques Date: Fri, 24 Feb 2023 10:03:12 -0300 Subject: [PATCH] GDScript: Fix groups and categories been seen as members --- modules/gdscript/gdscript_compiler.cpp | 6 +++++- .../runtime/features/groups_are_not_properties.gd | 9 +++++++++ .../runtime/features/groups_are_not_properties.out | 3 +++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.gd create mode 100644 modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.out diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index 35c9946bc1982..fad2bf334b4ad 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -211,6 +211,10 @@ static bool _can_use_ptrcall(const MethodBind *p_method, const Vectoris_constant && !(p_expression->get_datatype().is_meta_type && p_expression->get_datatype().kind == GDScriptParser::DataType::CLASS)) { return codegen.add_constant(p_expression->reduced_value); @@ -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); diff --git a/modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.gd b/modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.gd new file mode 100644 index 0000000000000..d205da22c2c86 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.gd @@ -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()) diff --git a/modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.out b/modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.out new file mode 100644 index 0000000000000..a1a2ff6cd9e4e --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/groups_are_not_properties.out @@ -0,0 +1,3 @@ +GDTEST_OK +Not shadowed +Not shadowed