From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55967) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zu7Qs-0002bN-6f for qemu-devel@nongnu.org; Wed, 04 Nov 2015 18:25:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zu7Qo-0007DB-Vp for qemu-devel@nongnu.org; Wed, 04 Nov 2015 18:25:34 -0500 Received: from mx1.redhat.com ([209.132.183.28]:43439) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zu7Qo-0007D6-LG for qemu-devel@nongnu.org; Wed, 04 Nov 2015 18:25:30 -0500 References: <1446618049-13596-1-git-send-email-eblake@redhat.com> <1446618049-13596-20-git-send-email-eblake@redhat.com> <87a8qtd1wk.fsf@blackfin.pond.sub.org> <563A90B8.8040407@redhat.com> From: Eric Blake Message-ID: <563A93E2.9030204@redhat.com> Date: Wed, 4 Nov 2015 16:25:22 -0700 MIME-Version: 1.0 In-Reply-To: <563A90B8.8040407@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="HMfh3AQ5n8DR87NQpqDf38cEpgEaPDK4F" Subject: Re: [Qemu-devel] [PATCH v9 19/27] qapi: Check for qapi collisions of flat union branches List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: qemu-devel@nongnu.org, Michael Roth This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --HMfh3AQ5n8DR87NQpqDf38cEpgEaPDK4F Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 11/04/2015 04:11 PM, Eric Blake wrote: > On 11/04/2015 12:01 PM, Markus Armbruster wrote: >> Eric Blake writes: >> >>> Right now, our ad hoc parser ensures that we cannot have a >>> flat union that introduces any qapi member names that would >>> conflict with the non-variant qapi members already present >>> from the union's base type (see flat-union-clash-member.json). >>> We want QAPISchema*.check() to make the same check, so we can >>> later reduce some of the ad hoc checks. >>> >=20 >> Why can't we simply add the new code to QAPISchemaObjectType.check()? >=20 > We could, but we'd need a nested for-loop: >=20 > for v in variants.variants: > v.type.check(schema) > assert not v.type.variants > vseen =3D dict(seen) > for m in v.type.members: > m.check_clash(seen) >=20 >> The rest of the clash checking is already there... >=20 > You do have a point there. I guess it wouldn't be the end of the world= > to have the loop nesting be explicit rather than indirect through the > intermediate Variants.check(). >=20 > I'll play with it; and depending on what I do, that may mean I don't > have to munge your other patches quite so heavily. And of course, as soon as I hit send, I had another thought - your patches already added Member.check_clash() called separately from the =2Echeck() chain; maybe I am better off adding a Variants.check_clash() separate from the .check() chain, rather than trying to cram the whole nested loop directly in ObjectType.check(). --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --HMfh3AQ5n8DR87NQpqDf38cEpgEaPDK4F Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJWOpPiAAoJEKeha0olJ0Nqf0QIAK2T5nRTp5X33Td6Mt5l1XIf JO1M4lu8h06dsIi5RDcqMmFxxZgJXmduZ0oqsCydn+LDLJpPMZ3kHOe7eiNzYWhx RjoAX9Tajw5MKmRVpZnfqK80NzIcbIl0diHlgRCvMBYg7FmREJYDZAMLXgrV0JAr +CsXXTPtkQvo4NHTom/kpdLaq2zBYPuzw0iAD+xgbPHCVbWcV+vUjyxcv3V7uLFb Ev2sVBrB+3mnJO4iDNZbV00+D0/7UCvTqBuGG1Pe1NX+ddo/jTU73EhDvfqrK6Ny P6kOp8wMhuDLoEymGntXAOWSv2N73GI2CwIRYy+w9XJoVVEGHDZQq/7KJsyJ+KE= =D/0C -----END PGP SIGNATURE----- --HMfh3AQ5n8DR87NQpqDf38cEpgEaPDK4F--