diff options
author | rune-scape <allie.smith.epic@gmail.com> | 2022-12-11 07:59:43 -0500 |
---|---|---|
committer | rune-scape <allie.smith.epic@gmail.com> | 2022-12-11 07:59:43 -0500 |
commit | 98e1a2031dc302ec67709d568d2e98e638f21145 (patch) | |
tree | 884a51aab365fe4be6aa3caa9fe6742c6b3d979c | |
parent | 1d19b0750e7d7f630ad3a55ef6fbc9d3ba6c8a94 (diff) |
Fix subscript of preloaded script
-rw-r--r-- | modules/gdscript/gdscript_analyzer.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 2892ae3f4e..103085bc3d 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -3345,7 +3345,10 @@ void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscri if (p_subscript->attribute == nullptr) { return; } - if (p_subscript->base->is_constant) { + + GDScriptParser::DataType base_type = p_subscript->base->get_datatype(); + // If base is a class metatype, use the analyzer instead. + if (p_subscript->base->is_constant && !(base_type.is_meta_type && base_type.kind == GDScriptParser::DataType::CLASS)) { // Just try to get it. bool valid = false; Variant value = p_subscript->base->reduced_value.get_named(p_subscript->attribute->name, valid); @@ -3369,8 +3372,6 @@ void GDScriptAnalyzer::reduce_subscript(GDScriptParser::SubscriptNode *p_subscri result_type = type_from_variant(value, p_subscript); } } else { - GDScriptParser::DataType base_type = p_subscript->base->get_datatype(); - if (base_type.is_variant() || !base_type.is_hard_type()) { result_type.kind = GDScriptParser::DataType::VARIANT; mark_node_unsafe(p_subscript); |