diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-03-04 12:27:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-04 12:27:20 +0100 |
commit | 2bc981948d254f45a0268cfc26eb0010f00b984c (patch) | |
tree | 3b068d33d62b9a0b529ea837056b9f6d215af3f3 /modules/gdscript/gdscript_function.cpp | |
parent | 49d82f245bf11bd9064c9de24704cbec2181b5ba (diff) | |
parent | 425ec6914c40ed0654db16f417e80daa2a84cdd0 (diff) |
Merge pull request #26573 from godotengine/revert-26562-gdscript-no-implicit-cast
Revert "Forbid implicit type conversion in GDScript"
Diffstat (limited to 'modules/gdscript/gdscript_function.cpp')
-rw-r--r-- | modules/gdscript/gdscript_function.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp index b2757f1b0b..cff9ba55b8 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])) { - if (argument_types[i].is_type(Variant())) { + if (!argument_types[i].is_type(*p_args[i], true)) { + if (argument_types[i].is_type(Variant(), true)) { memnew_placement(&stack[i], Variant); continue; } else { @@ -339,7 +339,12 @@ Variant GDScriptFunction::call(GDScriptInstance *p_instance, const Variant **p_a return Variant(); } } - memnew_placement(&stack[i], Variant(*p_args[i])); + 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])); + } } for (int i = p_argcount; i < _stack_size; i++) { memnew_placement(&stack[i], Variant); |