summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVitaly Cheptsov <4348897+vit9696@users.noreply.github.com>2021-10-05 15:37:49 +0300
committerGitHub <noreply@github.com>2021-10-05 05:37:49 -0700
commit82e1b6cb8faa8c4f0e9a57b3401a9b2a7afcc473 (patch)
treed93e89594f189be0c6b4d6229b34e201e169f78c /tests
parent277c6066c8b76f084a238d28bd6193871eb0b74f (diff)
downloadpycparser-82e1b6cb8faa8c4f0e9a57b3401a9b2a7afcc473.tar.gz
Implement C23 _Static_assert without message (#440)
Co-authored-by: vit9696 <vit9696@users.noreply.github.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/c_files/c11.c1
-rw-r--r--tests/test_c_generator.py1
-rwxr-xr-xtests/test_c_parser.py7
3 files changed, 8 insertions, 1 deletions
diff --git a/tests/c_files/c11.c b/tests/c_files/c11.c
index 1c7ec08..ff11162 100644
--- a/tests/c_files/c11.c
+++ b/tests/c_files/c11.c
@@ -33,6 +33,7 @@ _Noreturn void func(void)
int main()
{
_Static_assert(sizeof(flag) == sizeof(flag2), "Unexpected size difference");
+ _Static_assert(sizeof(flag) == sizeof(flag2));
static_assert(sizeof(flag) == sizeof(flag2), "Unexpected size difference");
static_assert(sizeof(flag) == sizeof(flag3), "Unexpected size difference");
static_assert(sizeof(flag) == sizeof(flag4), "Unexpected size difference");
diff --git a/tests/test_c_generator.py b/tests/test_c_generator.py
index a855e0b..4436a43 100644
--- a/tests/test_c_generator.py
+++ b/tests/test_c_generator.py
@@ -458,6 +458,7 @@ class TestCtoC(unittest.TestCase):
def test_static_assert(self):
self._assert_ctoc_correct('_Static_assert(sizeof(int) == sizeof(int), "123");')
self._assert_ctoc_correct('int main() { _Static_assert(sizeof(int) == sizeof(int), "123"); } ')
+ self._assert_ctoc_correct('_Static_assert(sizeof(int) == sizeof(int));')
def test_reduce_parentheses_binaryops(self):
c1 = 'int x = a + b + c + d;';
diff --git a/tests/test_c_parser.py b/tests/test_c_parser.py
index 5b9d916..e83bd7d 100755
--- a/tests/test_c_parser.py
+++ b/tests/test_c_parser.py
@@ -43,7 +43,10 @@ def expand_decl(decl):
elif typ == Alignas:
return ['Alignas', expand_init(decl.alignment)]
elif typ == StaticAssert:
- return ['StaticAssert', decl.cond.value, decl.message.value]
+ if decl.message:
+ return ['StaticAssert', decl.cond.value, decl.message.value]
+ else:
+ return ['StaticAssert', decl.cond.value]
else:
nested = expand_decl(decl.type)
@@ -1644,11 +1647,13 @@ class TestCParser_fundamentals(TestCParser_base):
int factorial(int p)
{
_Static_assert(2, "456");
+ _Static_assert(3);
}
''')
self.assertEqual(expand_decl(f1.ext[0]), ['StaticAssert', '1', '"123"'])
self.assertEqual(expand_decl(f1.ext[1].body.block_items[0]), ['StaticAssert', '2', '"456"'])
+ self.assertEqual(expand_decl(f1.ext[1].body.block_items[2]), ['StaticAssert', '3'])
def test_unified_string_literals(self):
# simple string, for reference