Skip to content

Commit a97b08e

Browse files
authored
Merge pull request #34745 from timothyqiu/vararg-return-nil-34743
Allows to doc vararg method return type as void
2 parents a0e8320 + 4d727f1 commit a97b08e

File tree

6 files changed

+17
-15
lines changed

6 files changed

+17
-15
lines changed

core/class_db.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -294,11 +294,11 @@ class ClassDB {
294294
}
295295

296296
template <class M>
297-
static MethodBind *bind_vararg_method(uint32_t p_flags, StringName p_name, M p_method, const MethodInfo &p_info = MethodInfo(), const Vector<Variant> &p_default_args = Vector<Variant>()) {
297+
static MethodBind *bind_vararg_method(uint32_t p_flags, StringName p_name, M p_method, const MethodInfo &p_info = MethodInfo(), const Vector<Variant> &p_default_args = Vector<Variant>(), bool p_return_nil_is_variant = true) {
298298

299299
GLOBAL_LOCK_FUNCTION;
300300

301-
MethodBind *bind = create_vararg_method_bind(p_method, p_info);
301+
MethodBind *bind = create_vararg_method_bind(p_method, p_info, p_return_nil_is_variant);
302302
ERR_FAIL_COND_V(!bind, NULL);
303303

304304
bind->set_name(p_name);

core/method_bind.h

+6-4
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ class MethodBindVarArg : public MethodBind {
344344
return (instance->*call_method)(p_args, p_arg_count, r_error);
345345
}
346346

347-
void set_method_info(const MethodInfo &p_info) {
347+
void set_method_info(const MethodInfo &p_info, bool p_return_nil_is_variant) {
348348

349349
set_argument_count(p_info.arguments.size());
350350
#ifdef DEBUG_METHODS_ENABLED
@@ -364,7 +364,9 @@ class MethodBindVarArg : public MethodBind {
364364
}
365365
argument_types = at;
366366
arguments = p_info;
367-
arguments.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
367+
if (p_return_nil_is_variant) {
368+
arguments.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
369+
}
368370
#endif
369371
}
370372

@@ -387,11 +389,11 @@ class MethodBindVarArg : public MethodBind {
387389
};
388390

389391
template <class T>
390-
MethodBind *create_vararg_method_bind(Variant (T::*p_method)(const Variant **, int, Variant::CallError &), const MethodInfo &p_info) {
392+
MethodBind *create_vararg_method_bind(Variant (T::*p_method)(const Variant **, int, Variant::CallError &), const MethodInfo &p_info, bool p_return_nil_is_variant) {
391393

392394
MethodBindVarArg<T> *a = memnew((MethodBindVarArg<T>));
393395
a->set_method(p_method);
394-
a->set_method_info(p_info);
396+
a->set_method_info(p_info, p_return_nil_is_variant);
395397
return a;
396398
}
397399

core/object.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1688,7 +1688,7 @@ void Object::_bind_methods() {
16881688
mi.name = "emit_signal";
16891689
mi.arguments.push_back(PropertyInfo(Variant::STRING, "signal"));
16901690

1691-
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "emit_signal", &Object::_emit_signal, mi);
1691+
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "emit_signal", &Object::_emit_signal, mi, varray(), false);
16921692
}
16931693

16941694
{
@@ -1704,7 +1704,7 @@ void Object::_bind_methods() {
17041704
mi.name = "call_deferred";
17051705
mi.arguments.push_back(PropertyInfo(Variant::STRING, "method"));
17061706

1707-
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "call_deferred", &Object::_call_deferred_bind, mi);
1707+
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "call_deferred", &Object::_call_deferred_bind, mi, varray(), false);
17081708
}
17091709

17101710
ClassDB::bind_method(D_METHOD("set_deferred", "property", "value"), &Object::set_deferred);

core/undo_redo.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ void UndoRedo::_bind_methods() {
520520
mi.arguments.push_back(PropertyInfo(Variant::OBJECT, "object"));
521521
mi.arguments.push_back(PropertyInfo(Variant::STRING, "method"));
522522

523-
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_do_method", &UndoRedo::_add_do_method, mi);
523+
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_do_method", &UndoRedo::_add_do_method, mi, varray(), false);
524524
}
525525

526526
{
@@ -529,7 +529,7 @@ void UndoRedo::_bind_methods() {
529529
mi.arguments.push_back(PropertyInfo(Variant::OBJECT, "object"));
530530
mi.arguments.push_back(PropertyInfo(Variant::STRING, "method"));
531531

532-
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_undo_method", &UndoRedo::_add_undo_method, mi);
532+
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "add_undo_method", &UndoRedo::_add_undo_method, mi, varray(), false);
533533
}
534534

535535
ClassDB::bind_method(D_METHOD("add_do_property", "object", "property", "value"), &UndoRedo::add_do_property);

doc/classes/Object.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,12 @@
9999
</description>
100100
</method>
101101
<method name="call_deferred" qualifiers="vararg">
102-
<return type="Variant">
102+
<return type="void">
103103
</return>
104104
<argument index="0" name="method" type="String">
105105
</argument>
106106
<description>
107-
Calls the [code]method[/code] on the object during idle time and returns the result. This method supports a variable number of arguments, so parameters are passed as a comma separated list. Example:
107+
Calls the [code]method[/code] on the object during idle time. This method supports a variable number of arguments, so parameters are passed as a comma separated list. Example:
108108
[codeblock]
109109
call_deferred("set", "position", Vector2(42.0, 0.0))
110110
[/codeblock]
@@ -178,7 +178,7 @@
178178
</description>
179179
</method>
180180
<method name="emit_signal" qualifiers="vararg">
181-
<return type="Variant">
181+
<return type="void">
182182
</return>
183183
<argument index="0" name="signal" type="String">
184184
</argument>

doc/classes/UndoRedo.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
</tutorials>
3333
<methods>
3434
<method name="add_do_method" qualifiers="vararg">
35-
<return type="Variant">
35+
<return type="void">
3636
</return>
3737
<argument index="0" name="object" type="Object">
3838
</argument>
@@ -65,7 +65,7 @@
6565
</description>
6666
</method>
6767
<method name="add_undo_method" qualifiers="vararg">
68-
<return type="Variant">
68+
<return type="void">
6969
</return>
7070
<argument index="0" name="object" type="Object">
7171
</argument>

0 commit comments

Comments
 (0)