summaryrefslogtreecommitdiff
path: root/ext/pybind11/tests/test_kwargs_and_defaults.cpp
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2017-05-09 19:22:53 +0100
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-05-22 17:15:09 +0000
commit6914a229a038206341ae1fea46393965a555ca9a (patch)
tree4a11cfaed46dabc827c5ee17cd976f42b5f53d49 /ext/pybind11/tests/test_kwargs_and_defaults.cpp
parentca1d18d599dcc620bf526fb22042af95b1b60b68 (diff)
downloadgem5-6914a229a038206341ae1fea46393965a555ca9a.tar.xz
ext: Upgrade PyBind11 to version 2.1.1
Change-Id: I16870dec402d661295f9d013dc23e362b2b2c169 Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Curtis Dunham <curtis.dunham@arm.com> Reviewed-on: https://gem5-review.googlesource.com/3225 Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'ext/pybind11/tests/test_kwargs_and_defaults.cpp')
-rw-r--r--ext/pybind11/tests/test_kwargs_and_defaults.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/ext/pybind11/tests/test_kwargs_and_defaults.cpp b/ext/pybind11/tests/test_kwargs_and_defaults.cpp
index 24fc0cd5b..3180123df 100644
--- a/ext/pybind11/tests/test_kwargs_and_defaults.cpp
+++ b/ext/pybind11/tests/test_kwargs_and_defaults.cpp
@@ -28,6 +28,27 @@ py::tuple args_kwargs_function(py::args args, py::kwargs kwargs) {
return py::make_tuple(args, kwargs);
}
+py::tuple mixed_plus_args(int i, double j, py::args args) {
+ return py::make_tuple(i, j, args);
+}
+
+py::tuple mixed_plus_kwargs(int i, double j, py::kwargs kwargs) {
+ return py::make_tuple(i, j, kwargs);
+}
+
+py::tuple mixed_plus_args_kwargs(int i, double j, py::args args, py::kwargs kwargs) {
+ return py::make_tuple(i, j, args, kwargs);
+}
+
+// pybind11 won't allow these to be bound: args and kwargs, if present, must be at the end.
+void bad_args1(py::args, int) {}
+void bad_args2(py::kwargs, int) {}
+void bad_args3(py::kwargs, py::args) {}
+void bad_args4(py::args, int, py::kwargs) {}
+void bad_args5(py::args, py::kwargs, int) {}
+void bad_args6(py::args, py::args) {}
+void bad_args7(py::kwargs, py::kwargs) {}
+
struct KWClass {
void foo(int, float) {}
};
@@ -53,4 +74,20 @@ test_initializer arg_keywords_and_defaults([](py::module &m) {
py::class_<KWClass>(m, "KWClass")
.def("foo0", &KWClass::foo)
.def("foo1", &KWClass::foo, "x"_a, "y"_a);
+
+ m.def("mixed_plus_args", &mixed_plus_args);
+ m.def("mixed_plus_kwargs", &mixed_plus_kwargs);
+ m.def("mixed_plus_args_kwargs", &mixed_plus_args_kwargs);
+
+ m.def("mixed_plus_args_kwargs_defaults", &mixed_plus_args_kwargs,
+ py::arg("i") = 1, py::arg("j") = 3.14159);
+
+ // Uncomment these to test that the static_assert is indeed working:
+// m.def("bad_args1", &bad_args1);
+// m.def("bad_args2", &bad_args2);
+// m.def("bad_args3", &bad_args3);
+// m.def("bad_args4", &bad_args4);
+// m.def("bad_args5", &bad_args5);
+// m.def("bad_args6", &bad_args6);
+// m.def("bad_args7", &bad_args7);
});