From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZL6tp-00086q-GI for qemu-devel@nongnu.org; Fri, 31 Jul 2015 05:46:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZL6tm-00081s-8p for qemu-devel@nongnu.org; Fri, 31 Jul 2015 05:46:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43071) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZL6tm-00081e-31 for qemu-devel@nongnu.org; Fri, 31 Jul 2015 05:46:42 -0400 From: Markus Armbruster References: <1435782155-31412-1-git-send-email-armbru@redhat.com> <1435782155-31412-8-git-send-email-armbru@redhat.com> <55B7E15D.50902@redhat.com> <87lhdzju4i.fsf@blackfin.pond.sub.org> Date: Fri, 31 Jul 2015 11:46:38 +0200 In-Reply-To: <87lhdzju4i.fsf@blackfin.pond.sub.org> (Markus Armbruster's message of "Wed, 29 Jul 2015 09:33:17 +0200") Message-ID: <87wpxgu0ap.fsf@blackfin.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH RFC v2 07/47] qapi: Generate a nicer struct for flat unions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake Cc: kwolf@redhat.com, berto@igalia.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com Markus Armbruster writes: > Eric Blake writes: > >> On 07/01/2015 02:21 PM, Markus Armbruster wrote: >>> The struct generated for a flat union is weird: the members of its >>> base are at the end, except for the union tag, which is renamed to >>> 'kind' and put at the beginning. >> >> The renaming to 'kind' was a bug waiting to happen. Consider this >> example, which is broken before your series: >> >> diff --git i/tests/qapi-schema/qapi-schema-test.json >> w/tests/qapi-schema/qapi-schema-test.json >> index c7eaa86..12c09e3 100644 >> --- i/tests/qapi-schema/qapi-schema-test.json >> +++ w/tests/qapi-schema/qapi-schema-test.json >> @@ -37,7 +37,7 @@ >> 'data': { 'string1': 'str', 'string2': 'str' } } >> >> { 'struct': 'UserDefUnionBase', >> - 'data': { 'string': 'str', 'enum1': 'EnumOne' } } >> + 'data': { 'kind': 'str', 'enum1': 'EnumOne' } } >> >> { 'union': 'UserDefFlatUnion', >> 'base': 'UserDefUnionBase', >> >> >> leading to this compilation error during 'make check-unit': >> >> In file included from tests/test-qmp-output-visitor.c:17:0: >> tests/test-qapi-types.h:617:11: error: duplicate member =E2=80=98kind=E2= =80=99 >> char *kind; >> ^ >> tests/test-qapi-types.h:631:11: error: duplicate member =E2=80=98kind=E2= =80=99 >> char *kind; >> ^ >> >> Therefore, it might be worth mentioning that avoiding the rename to >> 'kind' is a bug fix, not just a nicer struct :) > > Cool! I'll work (a variation of) this test case into my series. I split the bug fix off this patch. I put the test in the commit message, because I feel it has little value as regression test going forward.