Commit 14ff8461 authored by Markus Armbruster's avatar Markus Armbruster
Browse files

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.

Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Message-Id: <1446559499-26984-7-git-send-email-armbru@redhat.com>
[rebase to earlier changes that moved tag_member.check() of
alternate types, and tweak commit title and wording]
Signed-off-by: default avatarEric Blake <eblake@redhat.com>
Message-Id: <1447836791-369-11-git-send-email-eblake@redhat.com>
parent 577de12d
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -988,9 +988,10 @@ class QAPISchemaObjectType(QAPISchemaType):
        for m in self.local_members:
            m.check(schema)
            m.check_clash(seen)
        self.members = seen.values()
        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)