summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-01-13 13:14:57 +0100
committerGitHub <noreply@github.com>2020-01-13 13:14:57 +0100
commite32d2320532c6585e339051ed85dda211311ed87 (patch)
tree06ce64e01e22f962497193b1468e129a85738d4e
parent854a7bd9bb7c665c977ce8fab7d43a26dbfe7c53 (diff)
parente6060706cadaec88383e2ec42a3fa13c0bdf3394 (diff)
Merge pull request #35076 from vnen/gdscript-type-match-assign
Type match on assignment only if operators have type
-rw-r--r--modules/gdscript/gdscript_parser.cpp10
1 files changed, 2 insertions, 8 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index dcf5d35e36..3c056fc004 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -8210,12 +8210,10 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) {
_add_warning(GDScriptWarning::FUNCTION_MAY_YIELD, op->line, _find_function_name(static_cast<OperatorNode *>(op->arguments[1])));
}
- bool type_match = check_types;
#endif // DEBUG_ENABLED
+ bool type_match = lh_type.has_type && rh_type.has_type;
if (check_types && !_is_type_compatible(lh_type, rh_type)) {
-#ifdef DEBUG_ENABLED
type_match = false;
-#endif // DEBUG_ENABLED
// Try supertype test
if (_is_type_compatible(rh_type, lh_type)) {
@@ -8247,9 +8245,7 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) {
op->arguments.write[1] = convert_call;
-#ifdef DEBUG_ENABLED
type_match = true; // Since we are converting, the type is matching
-#endif // DEBUG_ENABLED
}
#ifdef DEBUG_ENABLED
if (lh_type.builtin_type == Variant::INT && rh_type.builtin_type == Variant::REAL) {
@@ -8262,10 +8258,8 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) {
if (!rh_type.has_type && (op->op != OperatorNode::OP_ASSIGN || lh_type.has_type || op->arguments[0]->type == Node::TYPE_OPERATOR)) {
_mark_line_as_unsafe(op->line);
}
- op->datatype.has_type = type_match;
-#else
- op->datatype.has_type = false;
#endif // DEBUG_ENABLED
+ op->datatype.has_type = type_match;
} break;
case OperatorNode::OP_CALL:
case OperatorNode::OP_PARENT_CALL: {