From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
To: Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, pbonzini@redhat.com, armbru@redhat.com,
lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [PATCH RFC 03/10] qapi script: check correctness of discriminator values in union
Date: Wed, 06 Nov 2013 11:02:38 +0800 [thread overview]
Message-ID: <5279B14E.2090301@linux.vnet.ibm.com> (raw)
In-Reply-To: <5278F1E5.1070402@redhat.com>
于 2013/11/5 21:25, Eric Blake 写道:
> On 11/04/2013 05:37 PM, Wenchao Xia wrote:
>> It will check whether the values specfied are wrotten correctly when
>
> s/specfied/specified/
> s/wrotten/written/
>
>> discriminator is a pre-defined enum type, which help check whether the
>> schema is in good form.
>>
>> It is allowed that, not every value in enum is used, so do not check
>
> s/that,/that/
>
>> that case.
>
> Why do you allow partial coverage? That feels like an accident waiting
> to happen. Does the user get a sane error message if they request an
> enum value that wasn't mapped to a union branch? I think it would be
> wiser to mandate that if the discriminator is an enum, then the union
> must cover all values of the enum.
>
abort() will be called in qapi-visit.c, it is OK for output visitor,
but bad for input visitor since user input may trigger it. I think
change abort() to error_set() could solve the problem, then we allow
map part of enum value.
>> +
>> +# Return the descriminator enum define, if discriminator is specified in
>
> s/descriminator/discriminator/
>
>> +# @expr and it is a pre-defined enum type
>> +def descriminator_find_enum_define(expr):
>
> s/descriminator/discriminator/ - and fix all callers
>
>> + discriminator = expr.get('discriminator')
>> + base = expr.get('base')
>> +
>> + # Only support discriminator when base present
>> + if not (discriminator and base):
>> + return None
>> +
>> + base_fields = find_base_fields(base)
>> +
>> + if not base_fields:
>> + sys.stderr.write("Base '%s' is not a valid type\n"
>> + % base)
>> + sys.exit(1)
>> +
>> + descriminator_type = base_fields.get(discriminator)
>
> s/descriminator/discriminator/
>
next prev parent reply other threads:[~2013-11-06 3:03 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-05 0:37 [Qemu-devel] [PATCH RFC 00/10] qapi script: support enum as discriminator and other improves Wenchao Xia
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 01/10] qapi: fix memleak by add implict struct functions in dealloc visitor Wenchao Xia
2013-11-05 13:17 ` Eric Blake
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 02/10] qapi script: remember enum values Wenchao Xia
2013-11-05 13:30 ` Eric Blake
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 03/10] qapi script: check correctness of discriminator values in union Wenchao Xia
2013-11-05 13:25 ` Eric Blake
2013-11-06 3:02 ` Wenchao Xia [this message]
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 04/10] qapi script: code move for generate_enum_name() Wenchao Xia
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 05/10] qapi script: use same function to generate enum string Wenchao Xia
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 06/10] qapi script: not generate hidden enum type for pre-defined enum discriminator Wenchao Xia
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 07/10] qapi script: support direct inheritance for struct Wenchao Xia
2013-11-05 13:41 ` Eric Blake
2013-11-06 3:20 ` Wenchao Xia
2013-11-06 13:33 ` Eric Blake
2013-11-07 2:33 ` Wenchao Xia
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 08/10] qapi script: do not add "_" for every capitalized char in enum Wenchao Xia
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 09/10] tests: fix memleak in error path test for input visitor Wenchao Xia
2013-11-05 13:20 ` Eric Blake
2013-11-06 2:18 ` Wenchao Xia
2013-11-05 0:37 ` [Qemu-devel] [PATCH RFC 10/10] tests: add cases for inherited struct and union with discriminator Wenchao Xia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5279B14E.2090301@linux.vnet.ibm.com \
--to=xiawenc@linux.vnet.ibm.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=kwolf@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.