diff options
Diffstat (limited to 'tests/run/decorators.pyx')
-rw-r--r-- | tests/run/decorators.pyx | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/run/decorators.pyx b/tests/run/decorators.pyx index 54623e0cb..64b0f0e20 100644 --- a/tests/run/decorators.pyx +++ b/tests/run/decorators.pyx @@ -17,6 +17,10 @@ __doc__ = u""" 3 >>> i.HERE 1 + >>> i_called_directly(4) + 3 + >>> i_called_directly.HERE + 1 """ class wrap: @@ -62,6 +66,35 @@ a = A() def i(x): return x - 1 +@A().decorate +def i_called_directly(x): + # PEP 614 means this now works + return x - 1 + +list_of_decorators = [decorate, decorate2] + +@list_of_decorators[0] +def test_index_from_decorator_list0(a, b): + """ + PEP 614 means this now works + >>> test_index_from_decorator_list0(1, 2) + 4 + >>> test_index_from_decorator_list0.HERE + 1 + """ + return a+b+1 + +@list_of_decorators[1](1,2) +def test_index_from_decorator_list1(a, b): + """ + PEP 614 means this now works + >>> test_index_from_decorator_list1(1, 2) + 4 + >>> test_index_from_decorator_list1.HERE + 1 + """ + return a+b+1 + def append_to_list_decorator(lst): def do_append_to_list_dec(func): def new_func(): @@ -81,3 +114,26 @@ def outer(arg1, arg2): def method(): return [4] return method() + +class HasProperty(object): + """ + >>> hp = HasProperty() + >>> hp.value + 0 + >>> hp.value = 1 + >>> hp.value + 1 + """ + def __init__(self) -> None: + self._value = 0 + + @property + def value(self) -> int: + return self._value + + # https://github.com/cython/cython/issues/4836 + # The variable tracker was confusing "value" in the decorator + # for "value" in the argument list + @value.setter + def value(self, value: int): + self._value = value |