diff --git a/include/pybind11/detail/type_caster_base.h b/include/pybind11/detail/type_caster_base.h index 16387506cf..38b5fcf5d0 100644 --- a/include/pybind11/detail/type_caster_base.h +++ b/include/pybind11/detail/type_caster_base.h @@ -156,6 +156,19 @@ PYBIND11_NOINLINE void all_type_info_populate(PyTypeObject *t, std::vectortp_name); + for (const auto &base : item.second) { + printf(" %s\n", base->type->tp_name); + } + } + printf("}\n"); + fflush(stdout); +} + /** * Extracts vector of type_info pointers of pybind-registered roots of the given Python type. Will * be just 1 pybind type for the Python type of a pybind-registered class, or for any Python-side @@ -171,6 +184,7 @@ inline const std::vector &all_type_info(PyTypeObject *type) if (ins.second) { // New cache entry: populate it all_type_info_populate(type, ins.first->second); + dump_registered_types_py(); } return ins.first->second; diff --git a/tests/test_python_multiple_inheritance.py b/tests/test_python_multiple_inheritance.py index cdd34d9ceb..5b18cfea1a 100644 --- a/tests/test_python_multiple_inheritance.py +++ b/tests/test_python_multiple_inheritance.py @@ -15,7 +15,7 @@ def __init__(self, value): # Moving this test after test_PC() changes the behavior! -def test_PPCCInit(): +def NOtest_PPCCInit(): d = PPCCInit(11) assert d.get_drvd_value() == 36 d.reset_drvd_value(55) @@ -31,8 +31,13 @@ def test_PPCCInit(): assert d.get_base_value_from_drvd() == 30 -def test_PC(): +def NOtest_PC(): d = PC(11) assert d.get_base_value() == 11 d.reset_base_value(13) assert d.get_base_value() == 13 + + +def testOrderDependenceDemo(): + PC(0) + PPCCInit(0)