diff options
author | Julian Priestley <juzley@gmail.com> | 2017-04-19 12:58:58 +0100 |
---|---|---|
committer | Eli Bendersky <eliben@users.noreply.github.com> | 2017-04-19 04:58:58 -0700 |
commit | c290496da54ccb8024e4ef8ce117cb03b98eec2f (patch) | |
tree | 8653c7959a86c0af2b17074c24635bcb434d3c67 | |
parent | aac7b0599fc077ad1a0cabcb85bb26197107252d (diff) | |
download | pycparser-c290496da54ccb8024e4ef8ce117cb03b98eec2f.tar.gz |
Add compound literal support to CGenerator (eliben/pycparser#176) (#188)
-rw-r--r-- | pycparser/c_generator.py | 4 | ||||
-rw-r--r-- | tests/test_c_generator.py | 6 |
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() |