aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/libshiboken/basewrapper.cpp
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2018-07-14 15:10:56 +0200
committerChristian Tismer <tismer@stackless.com>2019-01-10 09:15:44 +0000
commita0543241df2273ad60a4c92e4ffe6e0cfb1042b9 (patch)
tree0e12bac1f772c6f8a985c63709e89231c3889e56 /sources/shiboken2/libshiboken/basewrapper.cpp
parent77265fcedc3411fb70e149cf9d9cd4f549de80e6 (diff)
Produce TypeError Messages Using the Signature Module
The TypeError messages can now be produced, based upon the signature module. As a feature under test, we produce ValueErrors instead in certain cases. This will probably improve, later. We are currently investigating how much can be determined, automatically. Task-number: PYSIDE-795 Change-Id: Ie8a648beaf8a3bed388e3c01ba501bb36859722e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/shiboken2/libshiboken/basewrapper.cpp')
-rw-r--r--sources/shiboken2/libshiboken/basewrapper.cpp40
1 files changed, 4 insertions, 36 deletions
diff --git a/sources/shiboken2/libshiboken/basewrapper.cpp b/sources/shiboken2/libshiboken/basewrapper.cpp
index e820e749b..3e1a7e8e5 100644
--- a/sources/shiboken2/libshiboken/basewrapper.cpp
+++ b/sources/shiboken2/libshiboken/basewrapper.cpp
@@ -596,42 +596,10 @@ void init()
shibokenAlreadInitialised = true;
}
-void setErrorAboutWrongArguments(PyObject* args, const char* funcName, const char** cppOverloads)
-{
- std::string msg;
- std::string params;
- if (args) {
- if (PyTuple_Check(args)) {
- for (Py_ssize_t i = 0, max = PyTuple_GET_SIZE(args); i < max; ++i) {
- if (i)
- params += ", ";
- PyObject* arg = PyTuple_GET_ITEM(args, i);
- params += Py_TYPE(arg)->tp_name;
- }
- } else {
- params = Py_TYPE(args)->tp_name;
- }
- }
-
- if (!cppOverloads) {
- msg = "'" + std::string(funcName) + "' called with wrong argument types: " + params;
- } else {
- msg = "'" + std::string(funcName) + "' called with wrong argument types:\n ";
- msg += funcName;
- msg += '(';
- msg += params;
- msg += ")\n";
- msg += "Supported signatures:";
- for (int i = 0; cppOverloads[i]; ++i) {
- msg += "\n ";
- msg += funcName;
- msg += '(';
- msg += cppOverloads[i];
- msg += ')';
- }
- }
- PyErr_SetString(PyExc_TypeError, msg.c_str());
-
+// setErrorAboutWrongArguments now gets overload info from the signature module.
+void setErrorAboutWrongArguments(PyObject *args, const char *funcName)
+{
+ SetError_Argument(args, funcName);
}
class FindBaseTypeVisitor : public HierarchyVisitor