Merge pull request #90448 from vnen/gdscript-infer-string-format
GDScript: Infer type with string format operator
This commit is contained in:
commit
67076c167d
|
@ -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;
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
# GH-88082
|
||||||
|
|
||||||
|
func test():
|
||||||
|
var x = 1
|
||||||
|
var message := "value: %s" % x
|
||||||
|
print(message)
|
|
@ -0,0 +1,2 @@
|
||||||
|
GDTEST_OK
|
||||||
|
value: 1
|
Loading…
Reference in New Issue