qapi: Fix crash on missing enum member name
New test case enum-dict-no-name.json crashes: $ python3 scripts/qapi-gen.py tests/qapi-schema/enum-dict-no-name.json Traceback (most recent call last): [...] File "/work/armbru/qemu/scripts/qapi/expr.py", line 458, in check_enum member_name = member['name'] KeyError: 'name' Root cause: we try to retrieve member 'name' before we check for missing members. With that fixed, we get the expected error "'data' member misses key 'name'". Fixes: 0825f62c842f2c07c5471391c6d7fd3f4fe83732 Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20210616072121.626431-1-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com>
This commit is contained in:
parent
a9649a719a
commit
a0c7b99bf7
@ -455,8 +455,8 @@ def check_enum(expr: _JSONObject, info: QAPISourceInfo) -> None:
|
|||||||
for m in members]
|
for m in members]
|
||||||
for member in members:
|
for member in members:
|
||||||
source = "'data' member"
|
source = "'data' member"
|
||||||
member_name = member['name']
|
|
||||||
check_keys(member, info, source, ['name'], ['if'])
|
check_keys(member, info, source, ['name'], ['if'])
|
||||||
|
member_name = member['name']
|
||||||
check_name_is_str(member_name, info, source)
|
check_name_is_str(member_name, info, source)
|
||||||
source = "%s '%s'" % (source, member_name)
|
source = "%s '%s'" % (source, member_name)
|
||||||
# Enum members may start with a digit
|
# Enum members may start with a digit
|
||||||
|
2
tests/qapi-schema/enum-dict-no-name.err
Normal file
2
tests/qapi-schema/enum-dict-no-name.err
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
enum-dict-no-name.json: In enum 'Enum':
|
||||||
|
enum-dict-no-name.json:2: 'data' member misses key 'name'
|
2
tests/qapi-schema/enum-dict-no-name.json
Normal file
2
tests/qapi-schema/enum-dict-no-name.json
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# enum member lacking a name
|
||||||
|
{ 'enum': 'Enum', 'data': [ {} ] }
|
0
tests/qapi-schema/enum-dict-no-name.out
Normal file
0
tests/qapi-schema/enum-dict-no-name.out
Normal file
Loading…
x
Reference in New Issue
Block a user