summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2021-09-14 06:46:04 -0700
committerEli Bendersky <eliben@gmail.com>2021-09-14 06:46:04 -0700
commitf6db111388ab8ac26913a6d6a16a5d6803d950a2 (patch)
treec80e9ee529b9ddb824e3dbca779d9fc7ad502945 /tests
parentbdcc186728124e6a90ed865031f11fba84165c19 (diff)
downloadpycparser-f6db111388ab8ac26913a6d6a16a5d6803d950a2.tar.gz
Fix declname for _Atomic specifiers, and add c-to-c tests
Updates #430
Diffstat (limited to 'tests')
-rw-r--r--tests/test_c_generator.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index 15a3831..0926b15 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -367,6 +367,31 @@ class TestCtoC(unittest.TestCase):
self.assertEqual(generator.visit(ast.ext[0].type.type.type),
'const int')
+ def test_atomic_qual(self):
+ #s = '_Atomic(_Atomic(int)*) x;'
+ #ast = parse_to_ast(s)
+ #print(c_generator.CGenerator().visit(ast))
+
+ self._assert_ctoc_correct('_Atomic int x;')
+ self._assert_ctoc_correct('_Atomic int* x;')
+ self._assert_ctoc_correct('int* _Atomic x;')
+
+ # _Atomic specifier gets turned into qualifier.
+ s1 = '_Atomic(int) x;'
+ c1 = self._run_c_to_c(s1)
+ self.assertEqual(c1, '_Atomic int x;\n')
+ self._assert_ctoc_correct(s1)
+
+ s2 = '_Atomic(int*) x;'
+ c2 = self._run_c_to_c(s2)
+ self.assertEqual(c2, 'int * _Atomic x;\n')
+ self._assert_ctoc_correct(s2)
+
+ s3 = '_Atomic(_Atomic(int)*) x;'
+ c3 = self._run_c_to_c(s3)
+ self.assertEqual(c3, '_Atomic int * _Atomic x;\n')
+ self._assert_ctoc_correct(s3)
+
def test_nested_sizeof(self):
src = '1'
for _ in range(30):