qapi: allow unions to contain further unions

This extends the QAPI schema validation to permit unions inside unions,
provided the checks for clashing fields pass.

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20230420102619.348173-4-berrange@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2023-04-20 11:26:19 +01:00 committed by Markus Armbruster
parent 1e148b545f
commit a17dbc4b79
12 changed files with 234 additions and 3 deletions

View file

@ -105,6 +105,35 @@ alternate UserDefAlternate
object UserDefC
member string1: str optional=False
member string2: str optional=False
enum TestUnionEnum
member value-a
member value-b
enum TestUnionEnumA
member value-a1
member value-a2
object TestUnionTypeA1
member integer: int optional=False
member name: str optional=False
object TestUnionTypeA2
member integer: int optional=False
member size: int optional=False
object q_obj_TestUnionTypeA-base
member type-a: TestUnionEnumA optional=False
object TestUnionTypeA
base q_obj_TestUnionTypeA-base
tag type-a
case value-a1: TestUnionTypeA1
case value-a2: TestUnionTypeA2
object TestUnionTypeB
member integer: int optional=False
member onoff: bool optional=False
object q_obj_TestUnionInUnion-base
member type: TestUnionEnum optional=False
object TestUnionInUnion
base q_obj_TestUnionInUnion-base
tag type
case value-a: TestUnionTypeA
case value-b: TestUnionTypeB
alternate AltEnumBool
tag type
case e: EnumOne