diff options
author | George Marques <george@gmarqu.es> | 2021-09-21 15:29:06 -0300 |
---|---|---|
committer | George Marques <george@gmarqu.es> | 2021-10-07 20:22:19 -0300 |
commit | 3a856b4fcc7433ac0fc2857d12e2e9b0f7395d5a (patch) | |
tree | fc788059ebd4d16348ecdf94e912f57fa02384f2 | |
parent | 49e7e049aba1dad3d778a4aea4afa23203ad795b (diff) |
GDScript: Use getter return type for the property type
The PropertyInfo hints are more relevant for the inspector. The getter
return type is more reliable and less likely to be incorrect and it is
what's going to be called in the end.
-rw-r--r-- | modules/gdscript/gdscript_analyzer.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 3abd8672fa..2dafc85f45 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -2608,10 +2608,13 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod const StringName &native = base.native_type; if (class_exists(native)) { - PropertyInfo prop_info; MethodInfo method_info; - if (ClassDB::get_property_info(native, name, &prop_info)) { - p_identifier->set_datatype(type_from_property(prop_info)); + if (ClassDB::has_property(native, name)) { + StringName getter_name = ClassDB::get_property_getter(native, name); + MethodBind *getter = ClassDB::get_method(native, getter_name); + if (getter != nullptr) { + p_identifier->set_datatype(type_from_property(getter->get_return_info())); + } return; } if (ClassDB::get_method_info(native, name, &method_info)) { |