Skip to content

Commit

Permalink
Merge pull request #93566 from Chaosus/gds_fix_enum_lookup
Browse files Browse the repository at this point in the history
Fix symbol lookup for native enums
  • Loading branch information
akien-mga committed Jun 26, 2024
2 parents df78d0d + 322c64c commit 93fc9b8
Showing 1 changed file with 23 additions and 4 deletions.
27 changes: 23 additions & 4 deletions modules/gdscript/gdscript_editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3657,11 +3657,21 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
return OK;
}

StringName enum_name = ClassDB::get_integer_constant_enum(class_name, p_symbol, true);
if (enum_name != StringName()) {
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_ENUM;
List<StringName> enums;
ClassDB::get_enum_list(class_name, &enums);
for (const StringName &E : enums) {
if (E == p_symbol) {
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_ENUM;
r_result.class_name = base_type.native_type;
r_result.class_member = p_symbol;
return OK;
}
}

if (!String(ClassDB::get_integer_constant_enum(class_name, p_symbol, true)).is_empty()) {
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
r_result.class_name = base_type.native_type;
r_result.class_member = enum_name;
r_result.class_member = p_symbol;
return OK;
}

Expand Down Expand Up @@ -3735,6 +3745,15 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
return OK;
}
} break;
case GDScriptParser::DataType::ENUM: {
if (base_type.enum_values.has(p_symbol)) {
r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
r_result.class_name = String(base_type.native_type).get_slicec('.', 0);
r_result.class_member = p_symbol;
return OK;
}
base_type.kind = GDScriptParser::DataType::UNRESOLVED;
} break;
default: {
base_type.kind = GDScriptParser::DataType::UNRESOLVED;
} break;
Expand Down

0 comments on commit 93fc9b8

Please sign in to comment.