From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45455) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zvm3e-0003PJ-Nu for qemu-devel@nongnu.org; Mon, 09 Nov 2015 08:00:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zvm3X-000534-IK for qemu-devel@nongnu.org; Mon, 09 Nov 2015 08:00:26 -0500 Received: from mx1.redhat.com ([209.132.183.28]:36794) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zvm3X-00052X-DW for qemu-devel@nongnu.org; Mon, 09 Nov 2015 08:00:19 -0500 From: Markus Armbruster References: <1446791754-23823-1-git-send-email-eblake@redhat.com> <1446791754-23823-25-git-send-email-eblake@redhat.com> Date: Mon, 09 Nov 2015 14:00:16 +0100 In-Reply-To: <1446791754-23823-25-git-send-email-eblake@redhat.com> (Eric Blake's message of "Thu, 5 Nov 2015 23:35:48 -0700") Message-ID: <87r3jzgwf3.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH v10 24/30] qapi: Factor out QAPISchemaObjectType.check_clash() 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: > Consolidate two common sequences of clash detection into a > new QAPISchemaObjectType.check_clash() helper method. > > No change to generated code. > > Signed-off-by: Eric Blake > > --- > v10: rebase on new Variants.check_clash() > v9: new patch, split off from v8 7/17 > --- > scripts/qapi.py | 19 ++++++++----------- > 1 file changed, 8 insertions(+), 11 deletions(-) > > diff --git a/scripts/qapi.py b/scripts/qapi.py > index 4c56935..6d8c4c7 100644 > --- a/scripts/qapi.py > +++ b/scripts/qapi.py > @@ -980,11 +980,7 @@ class QAPISchemaObjectType(QAPISchemaType): > seen = OrderedDict() > if self._base_name: > self.base = schema.lookup_type(self._base_name) > - assert isinstance(self.base, QAPISchemaObjectType) This assertion is lost. > - assert not self.base.variants # not implemented > - self.base.check(schema) > - for m in self.base.members: > - m.check_clash(seen) > + self.base.check_clash(schema, seen) > for m in self.local_members: > m.check(schema) > m.check_clash(seen) > @@ -994,6 +990,12 @@ class QAPISchemaObjectType(QAPISchemaType): > assert self.variants.tag_member in self.members > self.variants.check_clash(schema, seen) > > + def check_clash(self, schema, seen): > + self.check(schema) > + assert not self.variants # not implemented > + for m in self.members: > + m.check_clash(seen) > + > def is_implicit(self): > # See QAPISchema._make_implicit_object_type() > return self.name[0] == ':' > @@ -1062,12 +1064,7 @@ class QAPISchemaObjectTypeVariants(object): > for v in self.variants: > # Reset seen map for each variant, since qapi names from one > # branch do not affect another branch > - vseen = dict(seen) > - assert isinstance(v.type, QAPISchemaObjectType) This assertion is lost. > - assert not v.type.variants # not implemented > - v.type.check(schema) > - for m in v.type.members: > - m.check_clash(vseen) > + v.type.check_clash(schema, dict(seen)) > > > class QAPISchemaObjectTypeVariant(QAPISchemaObjectTypeMember):