Merge pull request #90448 from vnen/gdscript-infer-string-format

GDScript: Infer type with string format operator
This commit is contained in:
Rémi Verschelde 2024-04-10 17:49:49 +02:00
commit 67076c167d
No known key found for this signature in database
GPG Key ID: C3336907360768E1
3 changed files with 13 additions and 0 deletions

View File

@ -2864,6 +2864,11 @@ void GDScriptAnalyzer::reduce_binary_op(GDScriptParser::BinaryOpNode *p_binary_o
result.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT; result.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT;
result.kind = GDScriptParser::DataType::BUILTIN; result.kind = GDScriptParser::DataType::BUILTIN;
result.builtin_type = Variant::BOOL; result.builtin_type = Variant::BOOL;
} else if (p_binary_op->variant_op == Variant::OP_MODULE && left_type.builtin_type == Variant::STRING) {
// The modulo operator (%) on string acts as formatting and will always return a string.
result.type_source = left_type.type_source;
result.kind = GDScriptParser::DataType::BUILTIN;
result.builtin_type = Variant::STRING;
} else if (left_type.is_variant() || right_type.is_variant()) { } else if (left_type.is_variant() || right_type.is_variant()) {
// Cannot infer type because one operand can be anything. // Cannot infer type because one operand can be anything.
result.kind = GDScriptParser::DataType::VARIANT; result.kind = GDScriptParser::DataType::VARIANT;

View File

@ -0,0 +1,6 @@
# GH-88082
func test():
var x = 1
var message := "value: %s" % x
print(message)

View File

@ -0,0 +1,2 @@
GDTEST_OK
value: 1