qemu-devel
[Top][All Lists]
Advanced

[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

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]