summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2015-04-21 14:35:18 -0700
committerEli Bendersky <eliben@gmail.com>2015-04-21 14:35:18 -0700
commitb17da15ad70e0062019f6f9a78406410313184e8 (patch)
treeeb9724363ef75db7fefd93f55c0890b7ff66ac14
parente936d41acf13ae8995c3cdef01ca641917ef2db4 (diff)
downloadpycparser-b17da15ad70e0062019f6f9a78406410313184e8.tar.gz
Add some parser-level tests to PtrDecl qualifiers
-rw-r--r--CHANGES1
-rwxr-xr-xtests/test_c_parser.py16
2 files changed, 15 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index 15478f8..474011d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,7 @@
- Pull request #64: support keywords like const, volatile, restrict and static
in dimensions in array declarations.
- Reduce memory usage of AST nodes (issue #72).
+ - Parsing order of nested pointer declarations fixed (issue #68).
+ Version 2.10 (03.08.2013)
diff --git a/tests/test_c_parser.py b/tests/test_c_parser.py
index ff6d0a0..035182d 100755
--- a/tests/test_c_parser.py
+++ b/tests/test_c_parser.py
@@ -49,7 +49,10 @@ def expand_decl(decl):
dimval = decl.dim.value if decl.dim else ''
return ['ArrayDecl', dimval, decl.dim_quals, nested]
elif typ == PtrDecl:
- return ['PtrDecl', nested]
+ if decl.quals:
+ return ['PtrDecl', decl.quals, nested]
+ else:
+ return ['PtrDecl', nested]
elif typ == Typedef:
return ['Typedef', decl.name, nested]
elif typ == FuncDecl:
@@ -301,6 +304,16 @@ class TestCParser_fundamentals(TestCParser_base):
['ArrayDecl', '2', [],
['PtrDecl', ['TypeDecl', ['IdentifierType', ['int']]]]]]])
+ self.assertEqual(self.get_decl('char* const* p;'),
+ ['Decl', 'p',
+ ['PtrDecl', ['PtrDecl', ['const'],
+ ['TypeDecl', ['IdentifierType', ['char']]]]]])
+
+ self.assertEqual(self.get_decl('char* * const p;'),
+ ['Decl', 'p',
+ ['PtrDecl', ['const'], ['PtrDecl',
+ ['TypeDecl', ['IdentifierType', ['char']]]]]])
+
self.assertEqual(self.get_decl('char ***ar3D[40];'),
['Decl', 'ar3D',
['ArrayDecl', '40', [],
@@ -336,7 +349,6 @@ class TestCParser_fundamentals(TestCParser_base):
# explore named and unnamed function pointer parameters,
# with and without qualifiers
- #
# unnamed w/o quals
self.assertEqual(self.get_decl('int (*k)(int);'),