summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2015-04-20 05:39:21 -0700
committerEli Bendersky <eliben@gmail.com>2015-04-20 05:39:21 -0700
commit75ff8f894fcf3ead2d1c0b3deecad55cb362850c (patch)
tree8832b134423ee2e31356d6544f4efb629eb0df3b
parentad1ce208819b0380eed1e0d92b2cf8c694e5b54c (diff)
downloadpycparser-75ff8f894fcf3ead2d1c0b3deecad55cb362850c.tar.gz
Fix parsing of array decls
After qualifiers were added, some problems seeped in assigning dimensions properly.
-rw-r--r--pycparser/c_parser.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/pycparser/c_parser.py b/pycparser/c_parser.py
index 4273051..cd8fafb 100644
--- a/pycparser/c_parser.py
+++ b/pycparser/c_parser.py
@@ -984,13 +984,14 @@ class CParser(PLYParser):
def p_direct_declarator_3(self, p):
""" direct_declarator : direct_declarator LBRACKET type_qualifier_list_opt assignment_expression_opt RBRACKET
- """
+ """
+ quals = (p[3] if len(p) > 5 else []) or []
# Accept dimension qualifiers
# Per C99 6.7.5.3 p7
arr = c_ast.ArrayDecl(
type=None,
- dim=p[4],
- dim_quals=p[3] if p[3] != None else [],
+ dim=p[4] if len(p) > 5 else p[3],
+ dim_quals=quals,
coord=p[1].coord)
p[0] = self._type_modify_decl(decl=p[1], modifier=arr)