qapi: replace if condition list with dict {'all': [...]}

Replace the simple list sugar form with a recursive structure that will
accept other operators in the following commits (all, any or not).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20210804083105.97531-7-marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Accidental code motion undone.  Degenerate :forms: comment dropped.
Helper _check_if() moved.  Error messages tweaked.  ui.json updated.
Accidental changes to qapi-schema-test.json dropped.]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
Marc-André Lureau 2021-08-04 12:31:01 +04:00 committed by Markus Armbruster
parent d806f89f87
commit 5d83b9a130
27 changed files with 143 additions and 88 deletions

View file

@ -12,15 +12,16 @@ enum QType
module doc-good.json
enum Enum
member one
if ['defined(IFONE)']
if defined(IFONE)
member two
if ['defined(IFCOND)']
if defined(IFCOND)
feature enum-feat
object Base
member base1: Enum optional=False
if OrderedDict([('all', ['IFALL1', 'IFALL2'])])
object Variant1
member var1: str optional=False
if ['defined(IFSTR)']
if defined(IFSTR)
feature member-feat
feature variant1-feat
object Variant2
@ -29,7 +30,7 @@ object Object
tag base1
case one: Variant1
case two: Variant2
if ['IFTWO']
if IFTWO
feature union-feat1
object q_obj_Variant1-wrapper
member data: Variant1 optional=False
@ -38,13 +39,13 @@ object q_obj_Variant2-wrapper
enum SugaredUnionKind
member one
member two
if ['IFTWO']
if IFTWO
object SugaredUnion
member type: SugaredUnionKind optional=False
tag type
case one: q_obj_Variant1-wrapper
case two: q_obj_Variant2-wrapper
if ['IFTWO']
if IFTWO
feature union-feat2
alternate Alternate
tag type