On 11/09/2015 10:16 PM, Eric Blake wrote: >> We have tests covering attempts to do the former >> (struct-cycle-direct.json, struct-cycle-indirect.json). As far as I can >> see, we don't have tests covering the latter. Do we catch it? > > Yes, at least by virtue of the ad hoc tests: attempting to reuse a base > type of the flat union as a variant member will cause the qapi members > of the base type to appear more than once in the JSON object (that is, > the checks that reject flat-union-clash-member.json would also reject > this scenario). To test: > > diff --git i/tests/qapi-schema/qapi-schema-test.json > w/tests/qapi-schema/qapi-schema-test.json > index 44638da..16b2ffb 100644 > --- i/tests/qapi-schema/qapi-schema-test.json > +++ w/tests/qapi-schema/qapi-schema-test.json > @@ -67,7 +67,7 @@ > 'discriminator': 'enum1', > 'data': { 'value1' : 'UserDefA', > 'value2' : 'UserDefB', > - 'value3' : 'UserDefB' } } > + 'value3' : 'UserDefUnionBase' } }
Another test I just tried is creating a flat union with: empty -> base -> union then use empty as one of the union branches. In that case, there is no conflict (although base is included twice, neither inclusion adds members to the JSON object; and the inclusion is not circular so things compile just fine). So probably not worth adding a test for it. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature