diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-16 18:44:27 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-16 18:44:27 +0200 |
commit | ddb7969cb65f5e068265e200a378c1f75518b2e3 (patch) | |
tree | f7bbbce0240dd9b15076926105dad544f03dc3b8 /modules/gdscript/gdscript_analyzer.cpp | |
parent | 18f12d1a1e06f88b644793ea604a2a13a321de68 (diff) | |
parent | 3ac61aadd7929db650aba7ddc11de61fd75ca2e8 (diff) | |
download | redot-engine-ddb7969cb65f5e068265e200a378c1f75518b2e3.tar.gz |
Merge pull request #83257 from dalexeev/gds-fix-unresolved-type-for-incomplete-expressions
GDScript: Fix unresolved datatype for incomplete expressions
Diffstat (limited to 'modules/gdscript/gdscript_analyzer.cpp')
-rw-r--r-- | modules/gdscript/gdscript_analyzer.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 0a2dc0f87a..f3f95ba50b 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -2500,6 +2500,14 @@ void GDScriptAnalyzer::reduce_expression(GDScriptParser::ExpressionNode *p_expre case GDScriptParser::Node::WHILE: ERR_FAIL_MSG("Reaching unreachable case"); } + + if (p_expression->get_datatype().kind == GDScriptParser::DataType::UNRESOLVED) { + // Prevent `is_type_compatible()` errors for incomplete expressions. + // The error can still occur if `reduce_*()` is called directly. + GDScriptParser::DataType dummy; + dummy.kind = GDScriptParser::DataType::VARIANT; + p_expression->set_datatype(dummy); + } } void GDScriptAnalyzer::reduce_array(GDScriptParser::ArrayNode *p_array) { @@ -2802,9 +2810,6 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o } if (!left_type.is_set() || !right_type.is_set()) { - GDScriptParser::DataType dummy; - dummy.kind = GDScriptParser::DataType::VARIANT; - p_binary_op->set_datatype(dummy); return; } |