[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 05/14] qapi: Rework collision assertions
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v7 05/14] qapi: Rework collision assertions |
Date: |
Fri, 23 Oct 2015 17:33:33 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 |
On 10/16/2015 10:35 PM, Eric Blake wrote:
> Now that we have separate namespaces for QMP vs. tag values,
> we can simplify how the QAPISchema*.check() methods check for
> collisions. Each QAPISchemaObjectTypeMember check() call is
> given a single set of names it must not collide with; this set
> is either the QMP names (when this member is used by an
> ObjectType) or the case names (when this member is used by an
> ObjectTypeVariants). We no longer need an all_members
> parameter, as it can be computed by seen.values(). When used
> by a union, QAPISchemaObjectTypeVariant must also perform a
> QMP collision check for each member of its corresponding type.
>
> The new ObjectType.check_qmp() is an idempotent subset of
> check(), and can be called multiple times over different seen
> sets (useful, since the members of one type can be applied
> into more than one other location via inheritance or flat
> union variants).
>
> The code needs a temporary hack of passing a 'union' flag
> through Variants.check(), since we do not inline the branches
> of an alternate type into a parent QMP object. A later patch
> will rework how alternates are laid out, by adding a new
> subclass, and that will allow us to drop the extra parameter.
>
> There are no changes to generated code, and we can now add a
> positive test to qapi-schema-test that proves that alternates
> can now use names that would previously trigger assertions
> (see commit 7b2a5c2f for an example of the failure that was
> still possible for alternates before this commit).
>
> Future patches will add more positive tests, improve error
> message quality on actual collisions, and move collision
> checks out of ad hoc parse code into the check() methods.
This paragraph may be a bit out of date based on rebasing that I've
done, but one patch for sure that needs to come later is deferring
subset B v10 24/25 to after this point. The patch itself should be in
good state for reviewing, even if the commit message needs massaging.
>
> Signed-off-by: Eric Blake <address@hidden>
>
> ---
> v7: new patch, although it is a much cleaner implementation of
> what was attempted by subset B v8 15/18
> https://lists.gnu.org/archive/html/qemu-devel/2015-10/msg03042.html
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v7 04/14] qapi-introspect: Guarantee particular sorting, (continued)
- [Qemu-devel] [PATCH v7 04/14] qapi-introspect: Guarantee particular sorting, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 01/14] qapi: Use generated TestStruct machinery in tests, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 03/14] qapi: Provide nicer array names in introspection, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 06/14] qapi: Update tests related to QMP/branch collisions, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 08/14] qapi: Fix alternates that accept 'number' but not 'int', Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 09/14] qapi: Remove dead visitor code, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 14/14] qapi: Simplify visits of optional fields, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 05/14] qapi: Rework collision assertions, Eric Blake, 2015/10/17
- Re: [Qemu-devel] [PATCH v7 05/14] qapi: Rework collision assertions,
Eric Blake <=
- [Qemu-devel] [PATCH v7 12/14] qapi: Test failure in middle of array parse, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 10/14] qapi: Plug leaks in test-qmp-*, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 13/14] qapi: More tests of input arrays, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 02/14] qapi: Strengthen test of TestStructList, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 07/14] qapi: Simplify visiting of alternate types, Eric Blake, 2015/10/17
- [Qemu-devel] [PATCH v7 11/14] qapi: Simplify error testing in test-qmp-*, Eric Blake, 2015/10/17