aboutsummaryrefslogtreecommitdiff
path: root/scripts/qapi
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2021-08-04 12:30:58 +0400
committerMarkus Armbruster <armbru@redhat.com>2021-08-26 13:53:56 +0200
commit33aa3267bacc5a7af363c0ffa5f1bdabba54b989 (patch)
treed2a5887804da5d4c5e7a69b4de79688449c900c2 /scripts/qapi
parentf17539c80da3c0ebabbe75a04f5451995367ec91 (diff)
qapi: add QAPISchemaIfCond.is_present()
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20210804083105.97531-4-marcandre.lureau@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'scripts/qapi')
-rw-r--r--scripts/qapi/introspect.py4
-rw-r--r--scripts/qapi/schema.py7
2 files changed, 7 insertions, 4 deletions
diff --git a/scripts/qapi/introspect.py b/scripts/qapi/introspect.py
index db1ebbf53a..e23725e2f9 100644
--- a/scripts/qapi/introspect.py
+++ b/scripts/qapi/introspect.py
@@ -123,10 +123,10 @@ def _tree_to_qlit(obj: JSONValue,
ret = ''
if obj.comment:
ret += indent(level) + f"/* {obj.comment} */\n"
- if obj.ifcond.ifcond:
+ if obj.ifcond.is_present():
ret += gen_if(obj.ifcond.ifcond)
ret += _tree_to_qlit(obj.value, level)
- if obj.ifcond.ifcond:
+ if obj.ifcond.is_present():
ret += '\n' + gen_endif(obj.ifcond.ifcond)
return ret
diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
index e3beb24500..86fcd6cbd5 100644
--- a/scripts/qapi/schema.py
+++ b/scripts/qapi/schema.py
@@ -29,6 +29,9 @@ class QAPISchemaIfCond:
def __init__(self, ifcond=None):
self.ifcond = ifcond or []
+ def is_present(self):
+ return bool(self.ifcond)
+
class QAPISchemaEntity:
meta: Optional[str] = None
@@ -598,7 +601,7 @@ class QAPISchemaVariants:
self.info,
"discriminator member '%s' of %s must not be optional"
% (self._tag_name, base))
- if self.tag_member.ifcond.ifcond:
+ if self.tag_member.ifcond.is_present():
raise QAPISemError(
self.info,
"discriminator member '%s' of %s must not be conditional"
@@ -606,7 +609,7 @@ class QAPISchemaVariants:
else: # simple union
assert isinstance(self.tag_member.type, QAPISchemaEnumType)
assert not self.tag_member.optional
- assert self.tag_member.ifcond.ifcond == []
+ assert not self.tag_member.ifcond.is_present()
if self._tag_name: # flat union
# branches that are not explicitly covered get an empty type
cases = {v.name for v in self.variants}