qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 01/54] qapi: fix type_seen key error


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v2 01/54] qapi: fix type_seen key error
Date: Tue, 22 Aug 2017 18:40:15 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Marc-André Lureau <address@hidden> writes:

> Hi
>
> ----- Original Message -----
>> Marc-André Lureau <address@hidden> writes:
>> 
>> > The type_seen member can be of a different type than the 'qtype' being
>> > checked, since a string create several conflicts. Lookup the real
>> > conflicting type in the conflict set, that one must be present in
>> > type_seen.
>> >
>> > This fixes the following error, reproducible with the modified test:
>> >
>> > Traceback (most recent call last):
>> >   File "/home/elmarco/src/qq/tests/qapi-schema/test-qapi.py", line 56, in
>> >   <module>
>> >     schema = QAPISchema(sys.argv[1])
>> >   File "/home/elmarco/src/qq/scripts/qapi.py", line 1470, in __init__
>> >     self.exprs = check_exprs(parser.exprs)
>> >   File "/home/elmarco/src/qq/scripts/qapi.py", line 959, in check_exprs
>> >     check_alternate(expr, info)
>> >   File "/home/elmarco/src/qq/scripts/qapi.py", line 831, in check_alternate
>> >     % (name, key, types_seen[qtype]))
>> > KeyError: 'QTYPE_QSTRING'
>> >
>> > Signed-off-by: Marc-André Lureau <address@hidden>
>> > ---
>> >  scripts/qapi.py                                  | 6 ++++--
>> >  tests/qapi-schema/alternate-conflict-string.json | 4 ++--
>> >  2 files changed, 6 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/scripts/qapi.py b/scripts/qapi.py
>> > index 8aa2775f12..a3ac799535 100644
>> > --- a/scripts/qapi.py
>> > +++ b/scripts/qapi.py
>> > @@ -825,10 +825,12 @@ def check_alternate(expr, info):
>> >              else:
>> >                  conflicting.add('QTYPE_QNUM')
>> >                  conflicting.add('QTYPE_QBOOL')
>> > -        if conflicting & set(types_seen):
>> > +        conflict = conflicting & set(types_seen)
>> > +        if conflict:
>> > +            conflict_qtype = list(conflict)[0]
>> 
>> Converting from set to list just to extract an element is clumsly.
>> Let's use conflict.pop(), and eliminate the variable.  Can do on commit.
>
> I didn't realize that. thanks

I didn't know about .pop() either, but I went "there's *got* to be a
better way!" and searched the docs for it :)

[...]



reply via email to

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