diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-02-13 23:43:09 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-02-13 23:43:09 +0100 |
commit | 02a9a31b1bef87207986b7cdc34b6a9f596a3caf (patch) | |
tree | aac1a44f1d73cb7e54ba51363c703ee2d1611cb4 | |
parent | 853c36ca0b6a4b8982215115b1fb1b62b58f2d98 (diff) | |
parent | 9cb2da89d6a763b497f87ff92bdbe8a7cc0258a8 (diff) |
Merge pull request #73244 from vonagam/fix-int-in-float-typed-array
GDScript: Fix usage of ints with typed array of floats
-rw-r--r-- | core/variant/container_type_validate.h | 5 | ||||
-rw-r--r-- | modules/gdscript/tests/scripts/analyzer/features/typed_array_usage.gd | 3 |
2 files changed, 6 insertions, 2 deletions
diff --git a/core/variant/container_type_validate.h b/core/variant/container_type_validate.h index ad679db9d0..ffe1dc90a3 100644 --- a/core/variant/container_type_validate.h +++ b/core/variant/container_type_validate.h @@ -73,7 +73,7 @@ struct ContainerTypeValidate { return type != p_type.type || class_name != p_type.class_name || script != p_type.script; } - // Coerces String and StringName into each other when needed. + // Coerces String and StringName into each other and int into float when needed. _FORCE_INLINE_ bool validate(Variant &inout_variant, const char *p_operation = "use") const { if (type == Variant::NIL) { return true; @@ -89,6 +89,9 @@ struct ContainerTypeValidate { } else if (type == Variant::STRING_NAME && inout_variant.get_type() == Variant::STRING) { inout_variant = StringName(inout_variant); return true; + } else if (type == Variant::FLOAT && inout_variant.get_type() == Variant::INT) { + inout_variant = (float)inout_variant; + return true; } ERR_FAIL_V_MSG(false, "Attempted to " + String(p_operation) + " a variable of type '" + Variant::get_type_name(inout_variant.get_type()) + "' into a " + where + " of type '" + Variant::get_type_name(type) + "'."); diff --git a/modules/gdscript/tests/scripts/analyzer/features/typed_array_usage.gd b/modules/gdscript/tests/scripts/analyzer/features/typed_array_usage.gd index 092ae49d00..7416ecd87a 100644 --- a/modules/gdscript/tests/scripts/analyzer/features/typed_array_usage.gd +++ b/modules/gdscript/tests/scripts/analyzer/features/typed_array_usage.gd @@ -86,7 +86,8 @@ func test(): var typed_int := 556 var converted_floats: Array[float] = [typed_int] - assert(str(converted_floats) == '[556]') + converted_floats.push_back(498) + assert(str(converted_floats) == '[556, 498]') assert(converted_floats.get_typed_builtin() == TYPE_FLOAT) |