Author: Armin Rigo <[email protected]>
Branch: cmacros
Changeset: r2301:39f0d496d0eb
Date: 2015-10-04 19:21 +0200
http://bitbucket.org/cffi/cffi/changeset/39f0d496d0eb/
Log: more tests
diff --git a/testing/cffi0/test_parsing.py b/testing/cffi0/test_parsing.py
--- a/testing/cffi0/test_parsing.py
+++ b/testing/cffi0/test_parsing.py
@@ -511,13 +511,13 @@
#else
typedef long foo_t;
#endif
- foo_t foo(char);
+ foo_t *foo(char);
""")
case = ffi._parser._declarations['function foo']
assert isinstance(case, ConditionalCase)
assert case.condition == 'defined(ABC)'
- assert str(case.iftrue) == '<func (<char>), <int>, False>'
- assert str(case.iffalse) == '<func (<char>), <long>, False>'
+ assert str(case.iftrue) == '<func (<char>), <pointer to <int>>, False>'
+ assert str(case.iffalse) == '<func (<char>), <pointer to <long>>, False>'
def test_conditional_typedef_not_used_by_func():
ffi = FFI(backend=FakeBackend())
@@ -532,6 +532,27 @@
case = ffi._parser._declarations['function foo']
assert str(case) == '<func (<char>), <char>, False>'
+def test_conditional_typedef_partially_defined_1():
+ ffi = FFI(backend=FakeBackend())
+ ffi.cdef("""
+ #ifdef ABC
+ typedef int foo_t;
+ #endif
+ char foo(char);
+ """)
+ case = ffi._parser._declarations['function foo']
+ assert str(case) == '<func (<char>), <char>, False>'
+
+def test_conditional_typedef_partially_defined_2():
+ ffi = FFI(backend=FakeBackend())
+ ffi.cdef("""
+ #ifdef ABC
+ typedef int foo_t;
+ #endif
+ char foo(foo_t *);
+ """)
+ should_crash
+
def test_conditional_nested():
ffi = FFI(backend=FakeBackend())
ffi.cdef("""
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit