diff options
-rw-r--r-- | pycparser/c_generator.py | 4 | ||||
-rw-r--r-- | tests/test_c_generator.py | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/pycparser/c_generator.py b/pycparser/c_generator.py index 0575b8b..4c86f84 100644 --- a/pycparser/c_generator.py +++ b/pycparser/c_generator.py @@ -283,8 +283,8 @@ class CGenerator(object): for name in n.name: if isinstance(name, c_ast.ID): s += '.' + name.name - elif isinstance(name, c_ast.Constant): - s += '[' + name.value + ']' + else: + s += '[' + self.visit(name) + ']' s += ' = ' + self._visit_expr(n.expr) return s diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py index 9385e80..4e38f28 100644 --- a/tests/test_c_generator.py +++ b/tests/test_c_generator.py @@ -228,6 +228,11 @@ class TestCtoC(unittest.TestCase): } ''') + def test_issue246(self): + self._assert_ctoc_correct(r''' + int array[3] = {[0] = 0, [1] = 1, [1+1] = 2}; + ''') + def test_exprlist_with_semi(self): self._assert_ctoc_correct(r''' void x() { |