From 62077086076fb99fb7fe014522c44ae83f87dc4d Mon Sep 17 00:00:00 2001 From: Mariano Suligoy Date: Tue, 17 Aug 2021 21:17:01 -0300 Subject: GdScript: Use reduced constant expression result when doing binary operations. Fixes #50293 --- modules/gdscript/gdscript_analyzer.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'modules') diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index fe6d1a9240..c9b20463f6 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -1717,11 +1717,19 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o GDScriptParser::DataType left_type; if (p_binary_op->left_operand) { - left_type = p_binary_op->left_operand->get_datatype(); + if (p_binary_op->left_operand->is_constant) { + left_type = type_from_variant(p_binary_op->left_operand->reduced_value, p_binary_op->left_operand); + } else { + left_type = p_binary_op->left_operand->get_datatype(); + } } GDScriptParser::DataType right_type; if (p_binary_op->right_operand) { - right_type = p_binary_op->right_operand->get_datatype(); + if (p_binary_op->right_operand->is_constant) { + right_type = type_from_variant(p_binary_op->right_operand->reduced_value, p_binary_op->right_operand); + } else { + right_type = p_binary_op->right_operand->get_datatype(); + } } if (!left_type.is_set() || !right_type.is_set()) { -- cgit v1.2.3