summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript_function.cpp
diff options
context:
space:
mode:
authorGeorge Marques <george@gmarqu.es>2019-03-03 22:25:22 -0300
committerGeorge Marques <george@gmarqu.es>2019-03-03 22:25:22 -0300
commitd0b08342b8250aa76cdf934b97f2ab3ac114e259 (patch)
tree9edcd0d7bda37f168283efb28c0a7509e72bd379 /modules/gdscript/gdscript_function.cpp
parenta1e73dcc944627ab7185aec7cd4141fe4ebb97d7 (diff)
downloadredot-engine-d0b08342b8250aa76cdf934b97f2ab3ac114e259.tar.gz
GDScript: Forbid implicit type conversion
Since types are not present in release builds, this could cause issues where a variable does not have the exact defined type.
Diffstat (limited to 'modules/gdscript/gdscript_function.cpp')
-rw-r--r--modules/gdscript/gdscript_function.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp
index cff9ba55b8..b2757f1b0b 100644
--- a/modules/gdscript/gdscript_function.cpp
+++ b/modules/gdscript/gdscript_function.cpp
@@ -328,8 +328,8 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
continue;
}
- if (!argument_types[i].is_type(*p_args[i], true)) {
- if (argument_types[i].is_type(Variant(), true)) {
+ if (!argument_types[i].is_type(*p_args[i])) {
+ if (argument_types[i].is_type(Variant())) {
memnew_placement(&stack[i], Variant);
continue;
} else {
@@ -339,12 +339,7 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a
return Variant();
}
}
- if (argument_types[i].kind == GDScriptDataType::BUILTIN) {
- Variant arg = Variant::construct(argument_types[i].builtin_type, &p_args[i], 1, r_err);
- memnew_placement(&stack[i], Variant(arg));
- } else {
- memnew_placement(&stack[i], Variant(*p_args[i]));
- }
+ memnew_placement(&stack[i], Variant(*p_args[i]));
}
for (int i = p_argcount; i < _stack_size; i++) {
memnew_placement(&stack[i], Variant);