John Snow <js...@redhat.com> writes: > Iterating over the members of data isn't going to work if it's not some > form of dict anyway, but for the sake of mypy, formalize it. > > Signed-off-by: John Snow <js...@redhat.com> > Reviewed-by: Eduardo Habkost <ehabk...@redhat.com> > --- > scripts/qapi/expr.py | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py > index c97e8ce8a4d..afa6bd07769 100644 > --- a/scripts/qapi/expr.py > +++ b/scripts/qapi/expr.py > @@ -254,6 +254,9 @@ def check_union(expr, info): > raise QAPISemError(info, "'discriminator' requires 'base'") > check_name_is_str(discriminator, info, "'discriminator'") > > + if not isinstance(members, dict): > + raise QAPISemError(info, "'data' must be an object") > + > for (key, value) in members.items(): > source = "'data' member '%s'" % key > check_name_str(key, info, source) > @@ -267,6 +270,10 @@ def check_alternate(expr, info): > > if not members: > raise QAPISemError(info, "'data' must not be empty") > + > + if not isinstance(members, dict): > + raise QAPISemError(info, "'data' must be an object") > + > for (key, value) in members.items(): > source = "'data' member '%s'" % key > check_name_str(key, info, source)
All errors require a negative test. If an error is unreachable, it should be an assertion instead. If these new errors are reachable, the commit might be a bug fix.