Skip to content

Commit a331f96

Browse files
committed
Adding tests
1 parent c13f4b7 commit a331f96

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

include/pybind11/attr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ struct function_record {
184184

185185
/// True if this is a method
186186
bool is_method : 1;
187-
187+
188188
/// True if this function takes priority when defined in overload resolution
189189
bool is_priority_overload : 1;
190190

include/pybind11/pybind11.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ class cpp_function : public function {
340340
std::string(pybind11::str(rec->scope.attr("__name__"))) + "." + std::string(rec->name) + signature
341341
#endif
342342
);
343-
343+
344344
if (rec->is_priority_overload) {
345345
// Beginning of chain
346346
chain_start = rec;

tests/test_methods_and_attributes.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,18 @@ TEST_SUBMODULE(methods_and_attributes, m) {
327327
py::class_<MetaclassOverride>(m, "MetaclassOverride", py::metaclass((PyObject *) &PyType_Type))
328328
.def_property_readonly_static("readonly", [](py::object) { return 1; });
329329

330+
// test_overload_ordering
331+
struct OverloadOrder {
332+
int value;
333+
OverloadOrder(int value) : value(value) {}
334+
};
335+
py::class_<OverloadOrder>(m, "OverloadOrder")
336+
.def(py::init([](std::string) { return new OverloadOrder{1};}))
337+
.def(py::init([](std::string) { return new OverloadOrder{2};}))
338+
.def(py::init([](int) { return new OverloadOrder{1};}))
339+
.def(py::init([](int) { return new OverloadOrder{2};}), py::priority_overload())
340+
.def_readonly("value", &OverloadOrder::value);
341+
330342
#if !defined(PYPY_VERSION)
331343
// test_dynamic_attributes
332344
class DynamicClass {

tests/test_methods_and_attributes.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,3 +474,11 @@ def test_custom_caster_destruction():
474474

475475
# Make sure we still only have the original object (from ..._no_destroy()) alive:
476476
assert cstats.alive() == 1
477+
478+
479+
def test_overload_order_normal():
480+
assert m.OverloadOrder("this").value == 1
481+
482+
483+
def test_overload_order_priority():
484+
assert m.OverloadOrder(0).value == 2

0 commit comments

Comments
 (0)