diff options
Diffstat (limited to 'scripts/qapi-types.py')
-rw-r--r-- | scripts/qapi-types.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/scripts/qapi-types.py b/scripts/qapi-types.py index 07bd311657..84d46fb863 100644 --- a/scripts/qapi-types.py +++ b/scripts/qapi-types.py @@ -154,7 +154,9 @@ def generate_union(expr): name = expr['union'] typeinfo = expr['data'] + base = expr.get('base') + discriminator = expr.get('discriminator') ret = mcgen(''' struct %(name)s @@ -177,8 +179,13 @@ struct %(name)s ''') if base: - struct = find_struct(base) - ret += generate_struct_fields(struct['data']) + base_fields = find_struct(base)['data'] + if discriminator: + base_fields = base_fields.copy() + del base_fields[discriminator] + ret += generate_struct_fields(base_fields) + else: + assert not discriminator ret += mcgen(''' }; |