diff options
author | Amir Gonnen <amirgonnen@gmail.com> | 2019-03-28 00:22:44 +0200 |
---|---|---|
committer | Eli Bendersky <eliben@users.noreply.github.com> | 2019-03-27 15:22:44 -0700 |
commit | e1a1d737be66308b633215fa26ac5ed30e890103 (patch) | |
tree | 05c2766212f9e5f14fa8b78743a4a8f2577b6508 /tests | |
parent | 96059858252ea3673226a9a4d03a356bd51ba47e (diff) | |
download | pycparser-e1a1d737be66308b633215fa26ac5ed30e890103.tar.gz |
Generate pointer types correctly (#315)
* Add visit_PtrDecl to generate ptr types correctly
Also removed code duplication from visit_ArrayDecl and visit_TypeDecl by calling _generate_type instead, without emitting the declname.
Added tests for ptr type generation
* Truncate lines longer than 80 characters
per https://github.com/eliben/pycparser/pull/315/files#r269553083
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_c_generator.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py index e2f7bee..b48094e 100644 --- a/tests/test_c_generator.py +++ b/tests/test_c_generator.py @@ -336,8 +336,22 @@ class TestCtoC(unittest.TestCase): self._assert_ctoc_correct('int g(const int a[const 20]){}') ast = parse_to_ast('const int a[const 20];') generator = c_generator.CGenerator() - self.assertEqual(generator.visit(ast.ext[0].type), 'const int[const 20]') - self.assertEqual(generator.visit(ast.ext[0].type.type), 'const int') + self.assertEqual(generator.visit(ast.ext[0].type), + 'const int [const 20]') + self.assertEqual(generator.visit(ast.ext[0].type.type), + 'const int') + + def test_ptr_decl(self): + src = 'const int ** const x;' + self._assert_ctoc_correct(src) + ast = parse_to_ast(src) + generator = c_generator.CGenerator() + self.assertEqual(generator.visit(ast.ext[0].type), + 'const int ** const') + self.assertEqual(generator.visit(ast.ext[0].type.type), + 'const int *') + self.assertEqual(generator.visit(ast.ext[0].type.type.type), + 'const int') if __name__ == "__main__": unittest.main() |