From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58219) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VgIRj-0007m4-VN for qemu-devel@nongnu.org; Tue, 12 Nov 2013 13:12:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VgIRf-0001I0-GF for qemu-devel@nongnu.org; Tue, 12 Nov 2013 13:12:15 -0500 Received: from mx1.redhat.com ([209.132.183.28]:20691) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VgIRf-0001Hu-7Y for qemu-devel@nongnu.org; Tue, 12 Nov 2013 13:12:11 -0500 Message-ID: <52826F76.7030904@redhat.com> Date: Tue, 12 Nov 2013 11:12:06 -0700 From: Eric Blake MIME-Version: 1.0 References: <1383766420-20745-1-git-send-email-xiawenc@linux.vnet.ibm.com> <1383766420-20745-4-git-send-email-xiawenc@linux.vnet.ibm.com> In-Reply-To: <1383766420-20745-4-git-send-email-xiawenc@linux.vnet.ibm.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="wAHtli7Kedd4PPrL5Rxkt8UtOXwv35VHe" Subject: Re: [Qemu-devel] [PATCH 3/8] qapi script: check correctness of discriminator values in union List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wenchao Xia , qemu-devel@nongnu.org Cc: kwolf@redhat.com, armbru@redhat.com, mdroth@linux.vnet.ibm.com, lcapitulino@redhat.com This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --wAHtli7Kedd4PPrL5Rxkt8UtOXwv35VHe Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 11/06/2013 12:33 PM, Wenchao Xia wrote: > It will check whether the values specified are written correctly when > discriminator is a pre-defined enum type, which help check whether the > schema is in good form. >=20 > It is allowed, that not every value in enum is used, so does not check > that case. Again, I think you should require that every value in the enum is used. >=20 > Signed-off-by: Wenchao Xia > --- > scripts/qapi-visit.py | 11 +++++++++++ > scripts/qapi.py | 33 +++++++++++++++++++++++++++++++++ > 2 files changed, 44 insertions(+), 0 deletions(-) >=20 > diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py > index b3d3af8..612dc4d 100644 > --- a/scripts/qapi-visit.py > +++ b/scripts/qapi-visit.py > @@ -251,6 +251,17 @@ def generate_visit_union(expr): > assert not base > return generate_visit_anon_union(name, members) > =20 > + # If discriminator is specified and it is a pre-defined enum in sc= hema, > + # check its correctness > + enum_define =3D discriminator_find_enum_define(expr) > + if enum_define: > + for key in members: > + if not key in enum_define["enum_values"]: > + sys.stderr.write("Discriminator value '%s' not found i= n " > + "enum '%s'\n" % > + (key, enum_define["enum_name"])) > + sys.exit(1) This checks for union branches not covered by the enum, but does not check for duplicate union branches, nor does it check for enum values not covered by a union branch. --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --wAHtli7Kedd4PPrL5Rxkt8UtOXwv35VHe Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.15 (GNU/Linux) Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJSgm92AAoJEKeha0olJ0Nq9DgH/ipDjhNK5plt0X17QyjlJbRN 0O6eXqbCCzET9VCN8ZGCopeX0Kxhhtfu7lX7sgVVJwzu4h5R7j/QJinATg29Ln9v FuCXSbMytPBMfBh8WoivCwn4BKyM08HGoGYXcHJPHvvQrvD19skSQZDyt14Px+VD pe4lKbmPNMy47aaa6/CTKqbUkSCP1P/hzLWTuKb8UWFNfYubqlE/gh8e6Ee5KyXY lRwbnMuw429FbRgASl5fC/tHNK5b/w1FAeYbnsqO67IzsEBLq20eXdqpfTlJRQyQ vP6jQ1ntcFLLx9dEcdYZ9x3gEPf7wTubxHlvBB+0ghxJi6XxPrEfG6XrsYg9L40= =fMsu -----END PGP SIGNATURE----- --wAHtli7Kedd4PPrL5Rxkt8UtOXwv35VHe--