This website requires JavaScript.
Explore
Help
Sign In
openkylin
/
qemu
mirror of
https://gitee.com/openkylin/qemu.git
Watch
9
Star
0
Fork
You've already forked qemu
0
Code
Issues
Projects
Releases
Wiki
Activity
20868330a9
qemu
/
tests
/
qapi-schema
/
union-empty.json
3 lines
66 B
JSON
Raw
Normal View
History
Unescape
Escape
qapi: Permit omitting all flat union branches Absent flat union branches default to the empty struct (since commit 800877bb16 "qapi: allow empty branches in flat unions"). But an attempt to omit all of them is rejected with "Union 'FOO' has no branches". Harmless oddity, but it's easy to avoid, so do that. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20190913201349.24332-11-armbru@redhat.com> [Commit message typo fixed]
2019-09-14 04:13:43 +08:00
#
s
i
m
p
l
e
u
n
i
o
n
s
c
a
n
n
o
t
b
e
e
m
p
t
y
qapi: Add tests for empty unions The documentation claims that alternates are useful for allowing two or more types, although nothing enforces this. Meanwhile, it is silent on whether empty unions are allowed. In practice, the generated code will compile, in part because we have a 'void *data' branch; but attempting to visit such a type will cause an abort(). While there's no technical reason that a degenerate union could not be made to work, it's harder to justify the time spent in chasing known (the current abort() during visit) and unknown corner cases, than it would be to just outlaw them. A future patch will probably take the approach of forbidding them; in the meantime, we can at least add testsuite coverage to make it obvious where things stand. In addition to adding tests to expose the problems, we also need to adjust existing tests that are meant to test something else, but which could fail for the wrong reason if we reject degenerate alternates/unions. Note that empty structs are explicitly supported (for example, right now they are the only way to specify that one branch of a flat union adds no additional members), and empty enums are covered by the testsuite as working (even if they do not seem to have much use). Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1443565276-4535-8-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
2015-09-30 06:21:05 +08:00
{
'
u
n
i
o
n
'
:
'
U
n
i
o
n
'
,
'
d
a
t
a
'
:
{
}
}