expected_error = "Cannot apply both @getter and @setter to the same function!"
self.expect_failure(block, expected_error, lineno=3)
+ def test_getset_no_class(self):
+ for annotation in "@getter", "@setter":
+ with self.subTest(annotation=annotation):
+ block = f"""
+ module m
+ {annotation}
+ m.func
+ """
+ expected_error = "@getter and @setter must be methods"
+ self.expect_failure(block, expected_error, lineno=2)
+
def test_duplicate_coexist(self):
err = "Called @coexist twice"
block = """
function_name = fields.pop()
module, cls = self.clinic._module_and_class(fields)
+ if self.kind in {GETTER, SETTER}:
+ if not cls:
+ fail("@getter and @setter must be methods")
+
self.update_function_kind(full_name)
if self.kind is METHOD_INIT and not return_converter:
return_converter = init_return_converter()