diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2021-10-11 20:29:43 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-11 20:29:43 +0300 |
commit | 188e08307ee79920815ad4e5df2a7d2a60c649a0 (patch) | |
tree | d95cf0417779df98e0832e5e0a2ad697d9ea1b1a /core/variant/variant_utility.cpp | |
parent | 94ce83beff04b35aa3d5812a210ea4f34028e054 (diff) | |
parent | e270d1cce34936a1ca65da93107b0ec07a040539 (diff) | |
download | redot-engine-188e08307ee79920815ad4e5df2a7d2a60c649a0.tar.gz |
Merge pull request #53647 from Chaosus/gds_fix_builtin_functions_autocompletion
Diffstat (limited to 'core/variant/variant_utility.cpp')
-rw-r--r-- | core/variant/variant_utility.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/core/variant/variant_utility.cpp b/core/variant/variant_utility.cpp index 55c1376031..666b582e39 100644 --- a/core/variant/variant_utility.cpp +++ b/core/variant/variant_utility.cpp @@ -1333,6 +1333,28 @@ Variant::UtilityFunctionType Variant::get_utility_function_type(const StringName return bfi->type; } +MethodInfo Variant::get_utility_function_info(const StringName &p_name) { + MethodInfo info; + const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); + if (bfi) { + info.name = p_name; + if (bfi->returns_value && bfi->return_type == Variant::NIL) { + info.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT; + } + info.return_val.type = bfi->return_type; + if (bfi->is_vararg) { + info.flags |= METHOD_FLAG_VARARG; + } + for (int i = 0; i < bfi->argnames.size(); ++i) { + PropertyInfo arg; + arg.type = bfi->get_arg_type(i); + arg.name = bfi->argnames[i]; + info.arguments.push_back(arg); + } + } + return info; +} + int Variant::get_utility_function_argument_count(const StringName &p_name) { const VariantUtilityFunctionInfo *bfi = utility_function_table.lookup_ptr(p_name); if (!bfi) { |