From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zvliz-0000FX-EY for qemu-devel@nongnu.org; Mon, 09 Nov 2015 07:39:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zvliw-0007s3-7r for qemu-devel@nongnu.org; Mon, 09 Nov 2015 07:39:05 -0500 Received: from mx1.redhat.com ([209.132.183.28]:40052) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zvliv-0007rq-W0 for qemu-devel@nongnu.org; Mon, 09 Nov 2015 07:39:02 -0500 From: Markus Armbruster References: <1446791754-23823-1-git-send-email-eblake@redhat.com> <1446791754-23823-23-git-send-email-eblake@redhat.com> Date: Mon, 09 Nov 2015 13:38:58 +0100 In-Reply-To: <1446791754-23823-23-git-send-email-eblake@redhat.com> (Eric Blake's message of "Thu, 5 Nov 2015 23:35:46 -0700") Message-ID: <871tbzibz1.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH v10 22/30] qapi: Simplify QAPISchemaObjectTypeVariants.check() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: qemu-devel@nongnu.org, Michael Roth Eric Blake writes: > From: Markus Armbruster > > 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: Markus Armbruster > 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: Eric Blake > > --- > v10: redo closer to Markus' original proposal > v9: new patch > --- > scripts/qapi.py | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/scripts/qapi.py b/scripts/qapi.py > index 2a73b2b..e057408 100644 > --- a/scripts/qapi.py > +++ b/scripts/qapi.py > @@ -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() > @@ -1052,8 +1053,6 @@ class QAPISchemaObjectTypeVariants(object): > def check(self, schema, seen): > if self.tag_name: # flat union > self.tag_member = seen[self.tag_name] My patch has: - if self.tag_name: # flat union + if not self.tag_member: # flat union self.tag_member = seen[self.tag_name] Any particular reason for dropping it? I like my change, because I feel it makes the assignment's purpose more obvious: ensure .tag_member is set. > - 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)