From fda436e0b281a97ca8efeeb01bbb4bc1d7beb69a Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 19 Feb 2018 20:18:57 -0500 Subject: [PATCH] qapi: Simplify QAPISchemaObjectTypeVariants.check() Reduce the ugly flat union / simple union conditional by doing just the essential work here, namely setting self.tag_member. Move the rest to callers. Backports commit 14ff84619c6bb9b729dbf8b127c1e4c56ed8c500 from qemu --- qemu/scripts/qapi.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/qemu/scripts/qapi.py b/qemu/scripts/qapi.py index 8258e373..224f0357 100644 --- a/qemu/scripts/qapi.py +++ b/qemu/scripts/qapi.py @@ -985,12 +985,13 @@ class QAPISchemaObjectType(QAPISchemaType): self.base.check(schema) for m in self.base.members: m.check_clash(seen) + self.members = seen.values() for m in self.local_members: m.check(schema) m.check_clash(seen) if self.variants: self.variants.check(schema, seen) - self.members = seen.values() + assert self.variants.tag_member in self.members def is_implicit(self): # See QAPISchema._make_implicit_object_type() @@ -1050,10 +1051,8 @@ class QAPISchemaObjectTypeVariants(object): self.variants = variants def check(self, schema, seen): - if self.tag_name: # flat union + if not self.tag_member: # flat union self.tag_member = seen[self.tag_name] - if seen: - assert self.tag_member in seen.itervalues() assert isinstance(self.tag_member.type, QAPISchemaEnumType) for v in self.variants: v.check(schema, self.tag_member.type)