[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v10 23/30] qapi: Check for qapi collisions of fl
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v10 23/30] qapi: Check for qapi collisions of flat union branches |
Date: |
Tue, 10 Nov 2015 16:37:29 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
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
- Re: [Qemu-devel] [PATCH v10 24/30] qapi: Factor out QAPISchemaObjectType.check_clash(), (continued)
[Qemu-devel] [PATCH v10 27/30] qapi: Track owner of each object member, Eric Blake, 2015/11/06
[Qemu-devel] [PATCH v10 28/30] qapi: Detect collisions in C member names, Eric Blake, 2015/11/06
[Qemu-devel] [PATCH v10 30/30] qapi: Forbid case-insensitive clashes, Eric Blake, 2015/11/06
[Qemu-devel] [PATCH v10 22/30] qapi: Simplify QAPISchemaObjectTypeVariants.check(), Eric Blake, 2015/11/06