Pārlūkot izejas kodu

Allow documenting unexposed return types in bind_native_method

Document return type of `Object.call` and `GDScript.new`
eska 9 gadi atpakaļ
vecāks
revīzija
4cd246898e
3 mainītis faili ar 12 papildinājumiem un 3 dzēšanām
  1. 1 1
      core/object.cpp
  2. 10 1
      core/object_type_db.h
  3. 1 1
      modules/gdscript/gd_script.cpp

+ 1 - 1
core/object.cpp

@@ -1651,7 +1651,7 @@ void Object::_bind_methods() {
 		}
 
 
-		ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"call",&Object::_call_bind,mi,defargs);
+		ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"call:Variant",&Object::_call_bind,mi,defargs);
 	}
 
 	{

+ 10 - 1
core/object_type_db.h

@@ -415,7 +415,7 @@ public:
 
 #endif
 	template<class M>
-	static MethodBind* bind_native_method(uint32_t p_flags, const StringName& p_name, M p_method,const MethodInfo& p_info=MethodInfo(),const Vector<Variant>& p_default_args=Vector<Variant>()) {
+	static MethodBind* bind_native_method(uint32_t p_flags, StringName p_name, M p_method,const MethodInfo& p_info=MethodInfo(),const Vector<Variant>& p_default_args=Vector<Variant>()) {
 
 		GLOBAL_LOCK_FUNCTION;
 
@@ -423,6 +423,13 @@ public:
 
 		MethodBind *bind = create_native_method_bind(p_method,p_info);
 		ERR_FAIL_COND_V(!bind,NULL);
+
+		String rettype;
+		if (p_name.operator String().find(":")!=-1) {
+			rettype = p_name.operator String().get_slice(":",1);
+			p_name = p_name.operator String().get_slice(":",0);
+		}
+
 		bind->set_name(p_name);
 		bind->set_default_arguments(p_default_args);
 
@@ -442,6 +449,8 @@ public:
 		}
 		type->method_map[p_name]=bind;
 #ifdef DEBUG_METHODS_ENABLED
+		if (!rettype.empty())
+			bind->set_return_type(rettype);
 		type->method_order.push_back(p_name);
 #endif
 

+ 1 - 1
modules/gdscript/gd_script.cpp

@@ -663,7 +663,7 @@ void GDScript::_get_property_list(List<PropertyInfo> *p_properties) const {
 
 void GDScript::_bind_methods() {
 
-	ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"new",&GDScript::_new,MethodInfo("new"));
+	ObjectTypeDB::bind_native_method(METHOD_FLAGS_DEFAULT,"new",&GDScript::_new,MethodInfo(Variant::OBJECT,"new"));
 
 	ObjectTypeDB::bind_method(_MD("get_as_byte_code"),&GDScript::get_as_byte_code);