[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaV
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs |
Date: |
Tue, 28 Jul 2015 08:44:16 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Eric Blake <address@hidden> writes:
> On 07/01/2015 02:22 PM, Markus Armbruster wrote:
>> Fixes flat unions to visit the base's base members (the previous
>> commit merely added them to the struct). Same test case.
>>
>> Patch's effect on visit_type_UserDefFlatUnion():
>>
>> static void visit_type_UserDefFlatUnion_fields(Visitor *m,
>> UserDefFlatUnion **obj, Error **errp)
>> {
>> Error *err = NULL;
>>
>> + visit_type_int(m, &(*obj)->integer, "integer", &err);
>> + if (err) {
>> + goto out;
>> + }
>> visit_type_str(m, &(*obj)->string, "string", &err);
>> if (err) {
>> goto out;
>>
>
>> +def gen_visit_union(name, base, variants):
>> + ret = ''
>>
>> if base:
>> - assert discriminator
>> - base_fields = find_struct(base)['data'].copy()
>> - del base_fields[discriminator]
>> - ret += generate_visit_struct_fields(name, base_fields)
>> + members = [m for m in base.members if m != variants.tag_member]
>> + ret += generate_visit_struct_fields(name, members)
>
> Ouch. This hurts. If the same class is used as both the base class of a
> flat union, and the base class of an ordinary struct, then the struct
> tries to visit the base class, but no longer parses the field that the
> union was using as its discriminator.
>
> We don't have any code that demonstrates this, but probably should. I
> ran into it while working up my POC of what it would take to unbox
> inherited structs (http://thread.gmane.org/gmane.comp.emulators.qemu/353204)
Is this broken in master, or do my patches break it?
Got a reproducer?
[...]
- Re: [Qemu-devel] [PATCH RFC v2 47/47] qapi-introspect: Hide type names, (continued)
- [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/07/01
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Eric Blake, 2015/07/22
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/07/27
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Eric Blake, 2015/07/27
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/07/28
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Eric Blake, 2015/07/28
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/07/29
Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Eric Blake, 2015/07/27
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs,
Markus Armbruster <=
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Eric Blake, 2015/07/28
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Markus Armbruster, 2015/07/29
- Re: [Qemu-devel] [PATCH RFC v2 27/47] qapi-visit: Convert to QAPISchemaVisitor, fixing bugs, Eric Blake, 2015/07/29
[Qemu-devel] [PATCH RFC v2 24/47] tests/qapi-schema: Convert test harness to QAPISchemaVisitor, Markus Armbruster, 2015/07/01
[Qemu-devel] [PATCH RFC v2 41/47] qom: Don't use 'gen': false for qom-get, qom-set, object-add, Markus Armbruster, 2015/07/01
[Qemu-devel] [PATCH RFC v2 33/47] qapi: Clean up after recent conversions to QAPISchemaVisitor, Markus Armbruster, 2015/07/01