add redeclaration test

This commit is contained in:
Michael Carlstrom 2024-12-18 17:09:27 -08:00
parent 882d20f57f
commit b296137950
2 changed files with 17 additions and 0 deletions

View File

@ -1058,7 +1058,12 @@ TEST_SUBMODULE(pytypes, m) {
instance.def(py::init());
instance.attr_with_type_hint<float>("y");
m.def("attr_with_type_hint_float_x", [](py::handle obj) {
obj.attr_with_type_hint<float>("x");
});
m.attr_with_type_hint<py::typing::Final<int>>("CONST_INT") = 3;
m.attr("defined___cpp_inline_variables") = true;
#else
m.attr("defined___cpp_inline_variables") = false;

View File

@ -1153,6 +1153,18 @@ def test_class_attribute_types() -> None:
assert instance1.y != instance2.y
@pytest.mark.skipif(
not m.defined___cpp_inline_variables,
reason="C++17 feature __cpp_inline_variables not available.",
)
def test_redeclaration_attr_with_type_hint() -> None:
obj = m.Instance()
m.attr_with_type_hint_float_x(obj)
help(obj)
assert get_annotations_helper(obj)["x"] == "float"
with pytest.raises(RuntimeError, match=r'^__annotations__\["x"\] was set already\.$'):
m.attr_with_type_hint_float_x(obj)
@pytest.mark.skipif(
not m.defined___cpp_inline_variables,
reason="C++17 feature __cpp_inline_variables not available.",