Merge pull request #212 from abergmeier/master

Increase available information on invocation error.
This commit is contained in:
Wenzel Jakob 2016-05-24 12:36:32 +02:00
commit ec10c20ba5
5 changed files with 13 additions and 5 deletions

View File

@ -29,7 +29,7 @@ kw_func(x=5, y=10)
kw_func(x=5, y=10) kw_func(x=5, y=10)
Caught expected exception: Incompatible function arguments. The following argument types are supported: Caught expected exception: Incompatible function arguments. The following argument types are supported:
1. (x : int = 100L, y : int = 200L) -> NoneType 1. (x : int = 100L, y : int = 200L) -> NoneType
Invoked with:
kw_func4: 13 17 kw_func4: 13 17
kw_func4: 1 2 3 kw_func4: 1 2 3
kw_func(x=1234, y=5678) kw_func(x=1234, y=5678)

View File

@ -11,7 +11,7 @@ Got void ptr : 0x7f9ba0f3c430
Called Example1 destructor (0) Called Example1 destructor (0)
Caught expected exception: Incompatible function arguments. The following argument types are supported: Caught expected exception: Incompatible function arguments. The following argument types are supported:
1. (capsule) -> NoneType 1. (capsule) -> NoneType
Invoked with: [1, 2, 3]
None None
Got null str : 0x0 Got null str : 0x0
<example.StringList object at 0x10d3277a0> <example.StringList object at 0x10d3277a0>

View File

@ -14,7 +14,7 @@ Polly is a parrot
Molly is a dog Molly is a dog
The following error is expected: Incompatible function arguments. The following argument types are supported: The following error is expected: Incompatible function arguments. The following argument types are supported:
1. (example.Dog) -> NoneType 1. (example.Dog) -> NoneType
Invoked with: <Pet object at 0>
Callback function 1 called! Callback function 1 called!
False False
Callback function 2 called : Hello, x, True, 5 Callback function 2 called : Hello, x, True, 5

View File

@ -7,8 +7,8 @@ Yay..
0==0, 1==1, 2==2, 3==3, 4==4, 5==5, 6==6, 7==7, 8==8, 9==9, 0==0, 1==1, 2==2, 3==3, 4==4, 5==5, 6==6, 7==7, 8==8, 9==9,
Failed as expected: Incompatible function arguments. The following argument types are supported: Failed as expected: Incompatible function arguments. The following argument types are supported:
1. (example.issues.ElementA) -> NoneType 1. (example.issues.ElementA) -> NoneType
Invoked with: None
Failed as expected: Incompatible function arguments. The following argument types are supported: Failed as expected: Incompatible function arguments. The following argument types are supported:
1. (int) -> int 1. (int) -> int
Invoked with: 5.2
12.0 12.0

View File

@ -422,6 +422,14 @@ protected:
msg += it2->signature; msg += it2->signature;
msg += "\n"; msg += "\n";
} }
msg += " Invoked with: ";
tuple args_(args, true);
for( std::size_t ti = 0; ti != args_.size(); ++ti)
{
msg += static_cast<std::string>(static_cast<object>(args_[ti]).str());
if ((ti + 1) != args_.size() )
msg += ", ";
}
PyErr_SetString(PyExc_TypeError, msg.c_str()); PyErr_SetString(PyExc_TypeError, msg.c_str());
return nullptr; return nullptr;
} else if (!result) { } else if (!result) {