[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 28/29] qapi: Enforce union and alternate branch naming rules
From: |
Markus Armbruster |
Subject: |
[PULL 28/29] qapi: Enforce union and alternate branch naming rules |
Date: |
Tue, 23 Mar 2021 22:56:57 +0100 |
Union branch names should use '-', not '_'. Enforce this. The only
offenders are in tests/. Fix them.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20210323094025.3569441-29-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
[Commit message typo fixed]
---
scripts/qapi/expr.py | 4 ++--
tests/qapi-schema/alternate-clash.err | 2 +-
tests/qapi-schema/alternate-clash.json | 6 ++++--
tests/qapi-schema/qapi-schema-test.json | 2 +-
tests/qapi-schema/qapi-schema-test.out | 4 ++--
tests/qapi-schema/union-clash-branches.err | 2 +-
tests/qapi-schema/union-clash-branches.json | 6 ++++--
7 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
index d968609c48..540b3982b1 100644
--- a/scripts/qapi/expr.py
+++ b/scripts/qapi/expr.py
@@ -274,7 +274,7 @@ def check_union(expr, info):
for (key, value) in members.items():
source = "'data' member '%s'" % key
if discriminator is None:
- check_name_lower(key, info, source, permit_underscore=True)
+ check_name_lower(key, info, source)
# else: name is in discriminator enum, which gets checked
check_keys(value, info, source, ['type'], ['if'])
check_if(value, info, source)
@@ -288,7 +288,7 @@ def check_alternate(expr, info):
raise QAPISemError(info, "'data' must not be empty")
for (key, value) in members.items():
source = "'data' member '%s'" % key
- check_name_lower(key, info, source, permit_underscore=True)
+ check_name_lower(key, info, source)
check_keys(value, info, source, ['type'], ['if'])
check_if(value, info, source)
check_type(value['type'], info, source)
diff --git a/tests/qapi-schema/alternate-clash.err
b/tests/qapi-schema/alternate-clash.err
index 0fe02f2c99..caa2d42e3f 100644
--- a/tests/qapi-schema/alternate-clash.err
+++ b/tests/qapi-schema/alternate-clash.err
@@ -1,2 +1,2 @@
alternate-clash.json: In alternate 'Alt1':
-alternate-clash.json:4: branch 'a_b' collides with branch 'a-b'
+alternate-clash.json:6: name of 'data' member 'a_b' must not use uppercase or
'_'
diff --git a/tests/qapi-schema/alternate-clash.json
b/tests/qapi-schema/alternate-clash.json
index 039c4be658..87f061a74a 100644
--- a/tests/qapi-schema/alternate-clash.json
+++ b/tests/qapi-schema/alternate-clash.json
@@ -1,5 +1,7 @@
# Alternate branch name collision
-# Reject an alternate that would result in a collision in generated C
-# names (this would try to generate two union members named 'a_b').
+# Naming rules make collision impossible (even with the pragma). If
+# that wasn't the case, then we'd get a collision in generated C: two
+# union members a_b.
+{ 'pragma': { 'member-name-exceptions': [ 'Alt1' ] } }
{ 'alternate': 'Alt1',
'data': { 'a-b': 'bool', 'a_b': 'int' } }
diff --git a/tests/qapi-schema/qapi-schema-test.json
b/tests/qapi-schema/qapi-schema-test.json
index 387678acbb..84b9d41f15 100644
--- a/tests/qapi-schema/qapi-schema-test.json
+++ b/tests/qapi-schema/qapi-schema-test.json
@@ -231,7 +231,7 @@
{ 'union': 'TestIfUnion', 'data':
{ 'foo': 'TestStruct',
- 'union_bar': { 'type': 'str', 'if': 'defined(TEST_IF_UNION_BAR)'} },
+ 'bar': { 'type': 'str', 'if': 'defined(TEST_IF_UNION_BAR)'} },
'if': 'defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)' }
{ 'command': 'test-if-union-cmd',
diff --git a/tests/qapi-schema/qapi-schema-test.out
b/tests/qapi-schema/qapi-schema-test.out
index 51efe5d7cd..e0b8a5f0b6 100644
--- a/tests/qapi-schema/qapi-schema-test.out
+++ b/tests/qapi-schema/qapi-schema-test.out
@@ -309,14 +309,14 @@ object q_obj_TestStruct-wrapper
member data: TestStruct optional=False
enum TestIfUnionKind
member foo
- member union_bar
+ member bar
if ['defined(TEST_IF_UNION_BAR)']
if ['defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)']
object TestIfUnion
member type: TestIfUnionKind optional=False
tag type
case foo: q_obj_TestStruct-wrapper
- case union_bar: q_obj_str-wrapper
+ case bar: q_obj_str-wrapper
if ['defined(TEST_IF_UNION_BAR)']
if ['defined(TEST_IF_UNION) && defined(TEST_IF_STRUCT)']
object q_obj_test-if-union-cmd-arg
diff --git a/tests/qapi-schema/union-clash-branches.err
b/tests/qapi-schema/union-clash-branches.err
index 73bbc2cabd..ef53645728 100644
--- a/tests/qapi-schema/union-clash-branches.err
+++ b/tests/qapi-schema/union-clash-branches.err
@@ -1,2 +1,2 @@
union-clash-branches.json: In union 'TestUnion':
-union-clash-branches.json:4: branch 'a_b' collides with branch 'a-b'
+union-clash-branches.json:6: name of 'data' member 'a_b' must not use
uppercase or '_'
diff --git a/tests/qapi-schema/union-clash-branches.json
b/tests/qapi-schema/union-clash-branches.json
index 3bece8c948..7bdda0b0da 100644
--- a/tests/qapi-schema/union-clash-branches.json
+++ b/tests/qapi-schema/union-clash-branches.json
@@ -1,5 +1,7 @@
# Union branch name collision
-# Reject a union that would result in a collision in generated C names (this
-# would try to generate two members 'a_b').
+# Naming rules make collision impossible (even with the pragma). If
+# that wasn't the case, then we'd get collisions in generated C: two
+# union members a_b, and two enum members TEST_UNION_A_B.
+{ 'pragma': { 'member-name-exceptions': [ 'TestUnion' ] } }
{ 'union': 'TestUnion',
'data': { 'a-b': 'int', 'a_b': 'str' } }
--
2.26.3
- [PULL 03/29] tests/qapi-schema: Rework comments on longhand member definitions, (continued)
- [PULL 03/29] tests/qapi-schema: Rework comments on longhand member definitions, Markus Armbruster, 2021/03/23
- [PULL 02/29] tests/qapi-schema: Drop redundant flat-union-inline test, Markus Armbruster, 2021/03/23
- [PULL 04/29] tests/qapi-schema: Belatedly update comment on alternate clash, Markus Armbruster, 2021/03/23
- [PULL 18/29] tests/qapi-schema: Rename returns-whitelist to returns-bad-type, Markus Armbruster, 2021/03/23
- [PULL 14/29] qapi: Enforce type naming rules, Markus Armbruster, 2021/03/23
- [PULL 15/29] tests/qapi-schema: Rename redefined-builtin to redefined-predefined, Markus Armbruster, 2021/03/23
- [PULL 23/29] qapi: Enforce feature naming rules, Markus Armbruster, 2021/03/23
- [PULL 21/29] tests-qmp-cmds: Drop unused and incorrect qmp_TestIfCmd(), Markus Armbruster, 2021/03/23
- [PULL 12/29] qapi: Consistently permit any case in downstream prefixes, Markus Armbruster, 2021/03/23
- [PULL 16/29] qapi: Factor out QAPISchemaParser._check_pragma_list_of_str(), Markus Armbruster, 2021/03/23
- [PULL 28/29] qapi: Enforce union and alternate branch naming rules,
Markus Armbruster <=
- [PULL 17/29] tests/qapi-schema: Rename pragma-*-crap to pragma-value-not-*, Markus Armbruster, 2021/03/23
- [PULL 09/29] qapi: Lift enum-specific code out of check_name_str(), Markus Armbruster, 2021/03/23
- [PULL 13/29] qapi: Enforce event naming rules, Markus Armbruster, 2021/03/23
- [PULL 29/29] block: Remove monitor command block_passwd, Markus Armbruster, 2021/03/23
- [PULL 22/29] qapi: Prepare for rejecting underscore in command and member names, Markus Armbruster, 2021/03/23
- [PULL 08/29] qapi: Permit flat union members for any tag value, Markus Armbruster, 2021/03/23
- [PULL 24/29] qapi: Enforce command naming rules, Markus Armbruster, 2021/03/23
- [PULL 20/29] qapi/pragma: Streamline comments on member-name-exceptions, Markus Armbruster, 2021/03/23
- [PULL 11/29] qapi: Move uppercase rejection to check_name_lower(), Markus Armbruster, 2021/03/23
- [PULL 10/29] qapi: Rework name checking in preparation of stricter checking, Markus Armbruster, 2021/03/23