Eric Blake <ebl...@redhat.com> 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 ‘kind’ > char *kind; > ^ > tests/test-qapi-types.h:631:11: error: duplicate member ‘kind’ > 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.