From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60829) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZwY0S-00089w-PY for qemu-devel@nongnu.org; Wed, 11 Nov 2015 11:12:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZwXzm-0008KZ-Ri for qemu-devel@nongnu.org; Wed, 11 Nov 2015 11:12:20 -0500 Received: from mx1.redhat.com ([209.132.183.28]:56341) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZwXzm-0008KI-KJ for qemu-devel@nongnu.org; Wed, 11 Nov 2015 11:11:38 -0500 References: <1447224690-9743-1-git-send-email-eblake@redhat.com> <1447224690-9743-14-git-send-email-eblake@redhat.com> <8737wcd4h7.fsf@blackfin.pond.sub.org> From: Eric Blake Message-ID: <564368B8.3020403@redhat.com> Date: Wed, 11 Nov 2015 09:11:36 -0700 MIME-Version: 1.0 In-Reply-To: <8737wcd4h7.fsf@blackfin.pond.sub.org> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="V8I5xDwxlrs4eRbGnqLGdllKsE6wdU1w2" Subject: Re: [Qemu-devel] [PATCH v11 13/28] qapi: Hoist tag collision check to Variants.check() 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) --V8I5xDwxlrs4eRbGnqLGdllKsE6wdU1w2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 11/11/2015 06:56 AM, Markus Armbruster wrote: > Eric Blake writes: >=20 >> Checking that a given QAPISchemaObjectTypeVariant.name is a >> member of the corresponding QAPISchemaEnumType of the owning >> QAPISchemaObjectTypeVariants.tag_member ensures that there are >> no collisions in the generated C union for those tag values >> (since the enum itself should have no collisions). >> >> However, this check was the only thing that Variant.check() was >> doing beyond the work of the superclass ObjectTypeMember.check(), >=20 > Since PATCH 05, actually. Suggest to mention that. I debated about munging patch 5 or 6 to actually make this change there; but decided that separate is just fine. But yes, mentioning the earlier commit title will help. >> @@ -1075,10 +1076,6 @@ class QAPISchemaObjectTypeVariant(QAPISchemaObj= ectTypeMember): >> def __init__(self, name, typ): >> QAPISchemaObjectTypeMember.__init__(self, name, typ, False) >> >> - def check(self, schema, tag_type): >> - QAPISchemaObjectTypeMember.check(self, schema) >> - assert self.name in tag_type.values >> - >> # This function exists to support ugly simple union special cases= >> # TODO get rid of them, and drop the function >> def simple_union_type(self): >=20 > QAPISchemaObjectTypeVariant is now an almost trivial variation of > QAPISchemaObjectTypeMember. Differences: >=20 > * __init__() has no parameter optional >=20 > * Method simple_union_type(), which exists only to support pointless > differences in code generation for simple unions, all marked TODO. >=20 > There's hope we can get rid of the class after the TODOs are resolved. Nope. Because in 15/28 I add back in a non-trivial difference of "role =3D= 'branch'" compared to the superclass "role =3D 'member'", which affects the quality of error messages using .describe(). That, and I still have no idea how to get rid of the TODO (we know how to convert simple unions to flat unions, but the conversion is an either-or choice: either we keep the C layout the same but change {} in the JSON representation, or we keep QMP the same but affect the C layout - so fixing the TODO has to resolve that discrepancy, and may end up touching lots of code). --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --V8I5xDwxlrs4eRbGnqLGdllKsE6wdU1w2 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/ iQEcBAEBCAAGBQJWQ2i4AAoJEKeha0olJ0Nqu9IH/1YILmo3epvVvcKTlj5W14n+ 2t10YcRKhfvJxL3uVQAZW/A9uxmKlsNaMQCjDBjfA6iYyoy7OlyWvyiqezZQK/ed EdUkz+L21uUXP92atFGysvMmv5yPo9k1i/gL3gAiEru+kXGFCwhhjeFs/yA3OnKu jtBmD8Q2i3S09Tpz+Q3Dd8nnc8SLy7RTUP1Ou+W2oTpqsqmAAgNbRjJIVMKvnQ+T +KRQXio9zDHgF8HmQv+k+IcVmGxd3T9JkldROXsF1JeDC6gYOHwR+/KBlTAn823I b4JVVWhfkAllb93XtOQ7aBp5MJpGmRajUS4XCWivf4hjdPh95YaNiV6arCOId20= =4hm+ -----END PGP SIGNATURE----- --V8I5xDwxlrs4eRbGnqLGdllKsE6wdU1w2--