GdScript: Use reduced constant expression result when doing binary operations. Fixes #50293

This commit is contained in:
Mariano Suligoy 2021-08-17 21:17:01 -03:00
parent 70c5feb32c
commit 6207708607

View file

@ -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()) {