On 9/24/19 8:28 AM, Markus Armbruster wrote: > When we introduced the QAPISchema intermediate representation (commit > ac88219a6c7), we took a shortcut: we left check_exprs() & friends > alone instead of moving semantic checks into the > QAPISchemaFOO.check(). check_exprs() still checks and reports errors, > and the .check() assert check_exprs() did the job. There are a few > gaps, though. > > QAPISchemaArrayType.check() neglects to assert the element type is not > an array. Add the assertion. > > QAPISchemaObjectTypeVariants.check() neglects to assert the tag member > is not optional. Add the assertion. > > It neglects to assert the tag member is not conditional. Add the > assertion. > > It neglects to assert we actually have variants. Add the assertion. > > It asserts the variants are object types, but neglects to assert they > don't have variants. Tighten the assertion. > > QAPISchemaObjectTypeVariants.check_clash() has the same issue. > However, it can run only after .check(). Delete the assertion instead > of tightening it. > > QAPISchemaAlternateType.check() neglects to assert the branch types > don't conflict. Fixing that isn't trivial, so add just a TODO comment > for now. It'll be resolved later in this series.
I'm guessing you found these by deleting check_exprs() and seeing what failed due to inadequate .check() > > Signed-off-by: Markus Armbruster <arm...@redhat.com> > --- > scripts/qapi/common.py | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature