Blame tests/run/pxd_signature_excvalue.srctree

Packit 562c7a
PYTHON setup.py build_ext --inplace
Packit 562c7a
PYTHON -c "import foo"
Packit 562c7a
PYTHON -c "import a; a.test()"
Packit 562c7a
Packit 562c7a
######## setup.py ########
Packit 562c7a
Packit 562c7a
from Cython.Build import cythonize
Packit 562c7a
from distutils.core import setup
Packit 562c7a
Packit 562c7a
setup(
Packit 562c7a
  ext_modules = cythonize("*.pyx"),
Packit 562c7a
)
Packit 562c7a
Packit 562c7a
######## foo.pxd ########
Packit 562c7a
Packit 562c7a
cdef int bar(int i) except *
Packit 562c7a
Packit 562c7a
cdef int (*var_opt)(int) except? -1
Packit 562c7a
cdef int (*var_orig)(int) except *
Packit 562c7a
Packit 562c7a
######## foo.pyx ########
Packit 562c7a
Packit 562c7a
cdef int bar(int i) except *:
Packit 562c7a
    if i == 10:
Packit 562c7a
        raise ValueError()
Packit 562c7a
    return i + 1
Packit 562c7a
Packit 562c7a
var_opt = bar   # by 'accident' of optimisation
Packit 562c7a
var_orig = bar  # by declaration
Packit 562c7a
Packit 562c7a
######## a.pyx ########
Packit 562c7a
Packit 562c7a
cimport cython
Packit 562c7a
from foo cimport bar, var_orig, var_opt
Packit 562c7a
Packit 562c7a
def test():
Packit 562c7a
    assert bar(-2) == -1
Packit 562c7a
    try:
Packit 562c7a
        bar(10)
Packit 562c7a
    except ValueError:
Packit 562c7a
        pass
Packit 562c7a
    else:
Packit 562c7a
        assert False, "exception not raised in bar()"
Packit 562c7a
Packit 562c7a
    assert var_orig(-2) == -1
Packit 562c7a
    try:
Packit 562c7a
        var_orig(10)
Packit 562c7a
    except ValueError:
Packit 562c7a
        pass
Packit 562c7a
    else:
Packit 562c7a
        assert False, "exception not raised in var_orig()"
Packit 562c7a
Packit 562c7a
    assert var_opt(-2) == -1
Packit 562c7a
    try:
Packit 562c7a
        var_opt(10)
Packit 562c7a
    except ValueError:
Packit 562c7a
        pass
Packit 562c7a
    else:
Packit 562c7a
        assert False, "exception not raised in var_opt()"