diff options
author | guillaumesottas <guillaumesottas@Guillaumes-MacBook-Pro.local> | 2019-03-25 10:24:53 -0600 |
---|---|---|
committer | guillaumesottas <guillaumesottas@Guillaumes-MacBook-Pro.local> | 2019-03-25 10:24:53 -0600 |
commit | 21e166d3a7641bda5821f23c3d6cc349585d1697 (patch) | |
tree | 770aaee75b05efe84b733a88843dfecd423ece63 | |
parent | 79ec6591d4bfd8e440729a705496ff645a055576 (diff) | |
download | cffi-21e166d3a7641bda5821f23c3d6cc349585d1697.tar.gz |
fix #407 add support for u/U suffix in integer constants (eg. 0xABu, or 0xCDU).
-rw-r--r-- | cffi/cparser.py | 2 | ||||
-rw-r--r-- | testing/cffi0/test_parsing.py | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/cffi/cparser.py b/cffi/cparser.py index df6303d..474f756 100644 --- a/cffi/cparser.py +++ b/cffi/cparser.py @@ -819,6 +819,8 @@ class Parser(object): s = exprnode.value if s.startswith('0'): if s.startswith('0x') or s.startswith('0X'): + if s.endswith('u') or s.endswith('U'): + s = s[:-1] return int(s, 16) return int(s, 8) elif '1' <= s[0] <= '9': diff --git a/testing/cffi0/test_parsing.py b/testing/cffi0/test_parsing.py index 2d75850..c06c4b6 100644 --- a/testing/cffi0/test_parsing.py +++ b/testing/cffi0/test_parsing.py @@ -466,3 +466,10 @@ def test_error_invalid_syntax_for_cdef(): e = py.test.raises(CDefError, ffi.cdef, 'void foo(void) {}') assert str(e.value) == ('<cdef source string>:1: unexpected <FuncDef>: ' 'this construct is valid C but not valid in cdef()') + +def test_unsigned_int_suffix_for_constant(): + ffi = FFI() + ffi.cdef("""enum e { + enumerator_0=0x00, + enumerator_1=0x01u, + enumerator_1=0x01U};""") |