summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Priestley <juzley@gmail.com>2017-04-19 12:58:58 +0100
committerEli Bendersky <eliben@users.noreply.github.com>2017-04-19 04:58:58 -0700
commitc290496da54ccb8024e4ef8ce117cb03b98eec2f (patch)
tree8653c7959a86c0af2b17074c24635bcb434d3c67
parentaac7b0599fc077ad1a0cabcb85bb26197107252d (diff)
downloadpycparser-c290496da54ccb8024e4ef8ce117cb03b98eec2f.tar.gz
Add compound literal support to CGenerator (eliben/pycparser#176) (#188)
-rw-r--r--pycparser/c_generator.py4
-rw-r--r--tests/test_c_generator.py6
2 files changed, 10 insertions, 0 deletions
diff --git a/pycparser/c_generator.py b/pycparser/c_generator.py
index 0423d9d..73e7f1b 100644
--- a/pycparser/c_generator.py
+++ b/pycparser/c_generator.py
@@ -178,6 +178,10 @@ class CGenerator(object):
s += self._make_indent() + '}\n'
return s
+ def visit_CompoundLiteral(self, n):
+ return '(' + self.visit(n.type) + '){' + self.visit(n.init) + '}'
+
+
def visit_EmptyStatement(self, n):
return ';'
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index cb3bd08..6d72237 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -275,5 +275,11 @@ class TestCtoC(unittest.TestCase):
}
''')
+ def test_compound_literal(self):
+ self._assert_ctoc_correct('char **foo = (char *[]){ "x", "y", "z" };')
+ self._assert_ctoc_correct('int i = ++(int){ 1 };')
+ self._assert_ctoc_correct('struct foo_s foo = (struct foo_s){ 1, 2 };')
+
+
if __name__ == "__main__":
unittest.main()