Add GDScript warning for standalone expression
This makes the error message clearer as it might be used to call functions with side effects.
This commit is contained in:
parent
e7b7dc57fc
commit
7d4fc79eb3
|
@ -2051,6 +2051,9 @@ String GDScriptWarning::get_message() const {
|
||||||
CHECK_SYMBOLS(2);
|
CHECK_SYMBOLS(2);
|
||||||
return "The '" + symbols[0] + "' keyword is deprecated and will be removed in a future release, please replace its uses by '" + symbols[1] + "'.";
|
return "The '" + symbols[0] + "' keyword is deprecated and will be removed in a future release, please replace its uses by '" + symbols[1] + "'.";
|
||||||
} break;
|
} break;
|
||||||
|
case STANDALONE_TERNARY: {
|
||||||
|
return "Standalone ternary conditional operator: the return value is being discarded.";
|
||||||
|
}
|
||||||
case WARNING_MAX: break; // Can't happen, but silences warning
|
case WARNING_MAX: break; // Can't happen, but silences warning
|
||||||
}
|
}
|
||||||
ERR_FAIL_V_MSG(String(), "Invalid GDScript warning code: " + get_name_from_code(code) + ".");
|
ERR_FAIL_V_MSG(String(), "Invalid GDScript warning code: " + get_name_from_code(code) + ".");
|
||||||
|
@ -2092,6 +2095,7 @@ String GDScriptWarning::get_name_from_code(Code p_code) {
|
||||||
"UNSAFE_CAST",
|
"UNSAFE_CAST",
|
||||||
"UNSAFE_CALL_ARGUMENT",
|
"UNSAFE_CALL_ARGUMENT",
|
||||||
"DEPRECATED_KEYWORD",
|
"DEPRECATED_KEYWORD",
|
||||||
|
"STANDALONE_TERNARY",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -297,6 +297,7 @@ struct GDScriptWarning {
|
||||||
UNSAFE_CAST, // Cast used in an unknown type
|
UNSAFE_CAST, // Cast used in an unknown type
|
||||||
UNSAFE_CALL_ARGUMENT, // Function call argument is of a supertype of the require argument
|
UNSAFE_CALL_ARGUMENT, // Function call argument is of a supertype of the require argument
|
||||||
DEPRECATED_KEYWORD, // The keyword is deprecated and should be replaced
|
DEPRECATED_KEYWORD, // The keyword is deprecated and should be replaced
|
||||||
|
STANDALONE_TERNARY, // Return value of ternary expression is discarded
|
||||||
WARNING_MAX,
|
WARNING_MAX,
|
||||||
} code;
|
} code;
|
||||||
Vector<String> symbols;
|
Vector<String> symbols;
|
||||||
|
|
|
@ -8274,7 +8274,11 @@ void GDScriptParser::_check_block_types(BlockNode *p_block) {
|
||||||
_mark_line_as_safe(op->line);
|
_mark_line_as_safe(op->line);
|
||||||
_reduce_node_type(op); // Test for safety anyway
|
_reduce_node_type(op); // Test for safety anyway
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
_add_warning(GDScriptWarning::STANDALONE_EXPRESSION, statement->line);
|
if (op->op == OperatorNode::OP_TERNARY_IF) {
|
||||||
|
_add_warning(GDScriptWarning::STANDALONE_TERNARY, statement->line);
|
||||||
|
} else {
|
||||||
|
_add_warning(GDScriptWarning::STANDALONE_EXPRESSION, statement->line);
|
||||||
|
}
|
||||||
#endif // DEBUG_ENABLED
|
#endif // DEBUG_ENABLED
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue