[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: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH v2 01/54] qapi: fix type_seen key error |
Date: |
Fri, 25 Aug 2017 14:12:21 +0000 |
On Fri, Aug 25, 2017 at 2:57 PM Eduardo Habkost <address@hidden> wrote:
> On Fri, Aug 25, 2017 at 08:02:26AM +0200, Markus Armbruster wrote:
> > Conflicts with Eduardo's "[PATCH v2] qapi: Fix error handling code on
> > alternate conflict".
> > Message-Id: <address@hidden>
> >
> > Marc-André, could you have a look? You can rebase your fix on top of
> > Eduardo's, or merge the two into one commit.
>
> Both patches seem to be fixing the same bug.
>
Yes, it is solved differently. But take Eduardo's patch, it has more
extensive tests .
>
> >
> > 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]
> > > raise QAPISemError(info, "Alternate '%s' member '%s'
> can't "
> > > "be distinguished from member '%s'"
> > > - % (name, key, types_seen[qtype]))
> > > + % (name, key,
> types_seen[conflict_qtype]))
> > > for qt in conflicting:
> > > types_seen[qt] = key
> > >
> > > diff --git a/tests/qapi-schema/alternate-conflict-string.json
> b/tests/qapi-schema/alternate-conflict-string.json
> > > index 85adbd4adc..bb2702978e 100644
> > > --- a/tests/qapi-schema/alternate-conflict-string.json
> > > +++ b/tests/qapi-schema/alternate-conflict-string.json
> > > @@ -1,4 +1,4 @@
> > > # alternate branches of 'str' type conflict with all scalar types
> > > { 'alternate': 'Alt',
> > > - 'data': { 'one': 'str',
> > > - 'two': 'int' } }
> > > + 'data': { 'one': 'int',
> > > + 'two': 'str' } }
>
> --
> Eduardo
>
> --
Marc-André Lureau
[Qemu-devel] [PATCH v2 07/54] tpm: simplify driver registration & lookup, Marc-André Lureau, 2017/08/22
[Qemu-devel] [PATCH v2 26/54] qapi-types: refactor variants handling, Marc-André Lureau, 2017/08/22
[Qemu-devel] [PATCH v2 15/54] qapi: add 'if' to top-level expressions, Marc-André Lureau, 2017/08/22
[Qemu-devel] [PATCH v2 36/54] qapi: add #if conditions to generated variants, Marc-André Lureau, 2017/08/22
[Qemu-devel] [PATCH v2 28/54] qapi: do not define enumeration value explicitely, Marc-André Lureau, 2017/08/22
[Qemu-devel] [PATCH v2 34/54] qapi: add #if conditions to generated struct members, Marc-André Lureau, 2017/08/22
[Qemu-devel] [PATCH v2 20/54] qapi-introspect: modify to_qlit() to take an optional suffix, Marc-André Lureau, 2017/08/22