mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 12:23:53 -06:00
qapi: Permit alternates with just one branch
A union or alternate without branches makes no sense and doesn't work: it can't be instantiated. A union or alternate with just one branch works, but is degenerate. We accept the former, but reject the latter. Weird. docs/devel/qapi-code-gen.txt doesn't mention the difference. It claims an alternate definition is "is similar to a simple union type". Permit degenerate alternates to make them consistent with unions. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20190913201349.24332-10-armbru@redhat.com>
This commit is contained in:
parent
675b214bc6
commit
f03255362a
5 changed files with 12 additions and 10 deletions
|
@ -920,11 +920,9 @@ def check_alternate(expr, info):
|
|||
members = expr['data']
|
||||
types_seen = {}
|
||||
|
||||
# Check every branch; require at least two branches
|
||||
if len(members) < 2:
|
||||
if len(members) == 0:
|
||||
raise QAPISemError(info,
|
||||
"Alternate '%s' should have at least two branches "
|
||||
"in 'data'" % name)
|
||||
"Alternate '%s' cannot have empty 'data'" % name)
|
||||
for (key, value) in members.items():
|
||||
check_name(info, "Member of alternate '%s'" % name, key)
|
||||
check_known_keys(info,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue