qapi: Segregate anonymous unions into alternates in generator
commit811d04fd0cff1229480d3f5b2e349f646ab6e3c1
authorEric Blake <eblake@redhat.com>
Mon, 4 May 2015 15:05:10 +0000 (4 09:05 -0600)
committerMarkus Armbruster <armbru@redhat.com>
Tue, 5 May 2015 16:39:00 +0000 (5 18:39 +0200)
tree8b0b2ef12caafd0fdea6dd560835cd96f7bf7111
parent268a1c5eb10832c2e4476d3fe199ea547dabecb7
qapi: Segregate anonymous unions into alternates in generator

Special-casing 'discriminator == {}' for handling anonymous unions
is getting awkward; since this particular type is not always a
dictionary on the wire, it is easier to treat it as a completely
different class of type, "alternate", so that if a type is listed
in the union_types array, we know it is not an anonymous union.

This patch just further segregates union handling, to make sure that
anonymous unions are not stored in union_types, and splitting up
check_union() into separate functions.  A future patch will change
the qapi grammar, and having the segregation already in place will
make it easier to deal with the distinct meta-type.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
scripts/qapi-types.py
scripts/qapi-visit.py
scripts/qapi.py
tests/qapi-schema/alternate-base.err
tests/qapi-schema/alternate-clash.err