You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-10 13:00:37 +00:00
Simplify Callable error text methods
This commit is contained in:
@@ -3341,27 +3341,7 @@ String Variant::get_construct_string() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String Variant::get_call_error_text(const StringName &p_method, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce) {
|
String Variant::get_call_error_text(const StringName &p_method, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce) {
|
||||||
String err_text;
|
return get_call_error_text(nullptr, p_method, p_argptrs, p_argcount, ce);
|
||||||
|
|
||||||
if (ce.error == Callable::CallError::CALL_ERROR_INVALID_ARGUMENT) {
|
|
||||||
int errorarg = ce.argument;
|
|
||||||
if (p_argptrs) {
|
|
||||||
err_text = "Cannot convert argument " + itos(errorarg + 1) + " from " + Variant::get_type_name(p_argptrs[errorarg]->get_type()) + " to " + Variant::get_type_name(Variant::Type(ce.expected)) + ".";
|
|
||||||
} else {
|
|
||||||
err_text = "Cannot convert argument " + itos(errorarg + 1) + " from [missing argptr, type unknown] to " + Variant::get_type_name(Variant::Type(ce.expected)) + ".";
|
|
||||||
}
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS) {
|
|
||||||
err_text = "Method expected " + itos(ce.argument) + " arguments, but called with " + itos(p_argcount) + ".";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS) {
|
|
||||||
err_text = "Method expected " + itos(ce.argument) + " arguments, but called with " + itos(p_argcount) + ".";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_INVALID_METHOD) {
|
|
||||||
err_text = "Method not found.";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL) {
|
|
||||||
err_text = "Instance is null";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_OK) {
|
|
||||||
return "Call OK";
|
|
||||||
}
|
|
||||||
return "'" + String(p_method) + "': " + err_text;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String Variant::get_call_error_text(Object *p_base, const StringName &p_method, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce) {
|
String Variant::get_call_error_text(Object *p_base, const StringName &p_method, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce) {
|
||||||
@@ -3386,37 +3366,20 @@ String Variant::get_call_error_text(Object *p_base, const StringName &p_method,
|
|||||||
return "Call OK";
|
return "Call OK";
|
||||||
}
|
}
|
||||||
|
|
||||||
String class_name = p_base->get_class();
|
String base_text;
|
||||||
Ref<Resource> script = p_base->get_script();
|
if (p_base) {
|
||||||
if (script.is_valid() && script->get_path().is_resource_file()) {
|
base_text = p_base->get_class();
|
||||||
class_name += "(" + script->get_path().get_file() + ")";
|
Ref<Resource> script = p_base->get_script();
|
||||||
|
if (script.is_valid() && script->get_path().is_resource_file()) {
|
||||||
|
base_text += "(" + script->get_path().get_file() + ")";
|
||||||
|
}
|
||||||
|
base_text += "::";
|
||||||
}
|
}
|
||||||
return "'" + class_name + "::" + String(p_method) + "': " + err_text;
|
return "'" + base_text + String(p_method) + "': " + err_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
String Variant::get_callable_error_text(const Callable &p_callable, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce) {
|
String Variant::get_callable_error_text(const Callable &p_callable, const Variant **p_argptrs, int p_argcount, const Callable::CallError &ce) {
|
||||||
String err_text;
|
return get_call_error_text(p_callable.get_object(), p_callable.get_method(), p_argptrs, p_argcount, ce);
|
||||||
|
|
||||||
if (ce.error == Callable::CallError::CALL_ERROR_INVALID_ARGUMENT) {
|
|
||||||
int errorarg = ce.argument;
|
|
||||||
if (p_argptrs) {
|
|
||||||
err_text = "Cannot convert argument " + itos(errorarg + 1) + " from " + Variant::get_type_name(p_argptrs[errorarg]->get_type()) + " to " + Variant::get_type_name(Variant::Type(ce.expected)) + ".";
|
|
||||||
} else {
|
|
||||||
err_text = "Cannot convert argument " + itos(errorarg + 1) + " from [missing argptr, type unknown] to " + Variant::get_type_name(Variant::Type(ce.expected)) + ".";
|
|
||||||
}
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_TOO_MANY_ARGUMENTS) {
|
|
||||||
err_text = "Method expected " + itos(ce.argument) + " arguments, but called with " + itos(p_argcount) + ".";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS) {
|
|
||||||
err_text = "Method expected " + itos(ce.argument) + " arguments, but called with " + itos(p_argcount) + ".";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_INVALID_METHOD) {
|
|
||||||
err_text = "Method not found.";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL) {
|
|
||||||
err_text = "Instance is null";
|
|
||||||
} else if (ce.error == Callable::CallError::CALL_OK) {
|
|
||||||
return "Call OK";
|
|
||||||
}
|
|
||||||
|
|
||||||
return String(p_callable) + " : " + err_text;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String vformat(const String &p_text, const Variant &p1, const Variant &p2, const Variant &p3, const Variant &p4, const Variant &p5) {
|
String vformat(const String &p_text, const Variant &p1, const Variant &p2, const Variant &p3, const Variant &p4, const Variant &p5) {
|
||||||
|
|||||||
@@ -850,7 +850,7 @@ bool CallbackTweener::step(float &r_delta) {
|
|||||||
Callable::CallError ce;
|
Callable::CallError ce;
|
||||||
callback.call(nullptr, 0, result, ce);
|
callback.call(nullptr, 0, result, ce);
|
||||||
if (ce.error != Callable::CallError::CALL_OK) {
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
ERR_FAIL_V_MSG(false, "Error calling method from CallbackTweener: " + Variant::get_call_error_text(callback.get_object(), callback.get_method(), nullptr, 0, ce));
|
ERR_FAIL_V_MSG(false, "Error calling method from CallbackTweener: " + Variant::get_callable_error_text(callback, nullptr, 0, ce));
|
||||||
}
|
}
|
||||||
|
|
||||||
finished = true;
|
finished = true;
|
||||||
@@ -921,7 +921,7 @@ bool MethodTweener::step(float &r_delta) {
|
|||||||
Callable::CallError ce;
|
Callable::CallError ce;
|
||||||
callback.call(argptr, 1, result, ce);
|
callback.call(argptr, 1, result, ce);
|
||||||
if (ce.error != Callable::CallError::CALL_OK) {
|
if (ce.error != Callable::CallError::CALL_OK) {
|
||||||
ERR_FAIL_V_MSG(false, "Error calling method from MethodTweener: " + Variant::get_call_error_text(callback.get_object(), callback.get_method(), argptr, 1, ce));
|
ERR_FAIL_V_MSG(false, "Error calling method from MethodTweener: " + Variant::get_callable_error_text(callback, argptr, 1, ce));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (time < duration) {
|
if (time < duration) {
|
||||||
|
|||||||
Reference in New Issue
Block a user