We had a pointless difference in label names, and on whether the generated code used: if (*obj) { stuff; ... } vs. if (!*obj) { goto out_obj; } stuff; ...
Pick a single style, as it will make it easier for later patches to uniformly apply any updates to generated code. No change in semantics to the generated code. Signed-off-by: Eric Blake <ebl...@redhat.com> --- scripts/qapi-visit.py | 53 ++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py index cea0414..58afb2d 100644 --- a/scripts/qapi-visit.py +++ b/scripts/qapi-visit.py @@ -208,7 +208,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error } visit_get_next_type(m, &(*obj)->type, %(promote_int)s, name, &err); if (err) { - goto out_end; + goto out_obj; } switch ((*obj)->type) { ''', @@ -229,7 +229,7 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", "%(name)s"); } -out_end: +out_obj: visit_end_implicit_struct(m, err ? NULL : &err); out: error_propagate(errp, err); @@ -261,33 +261,35 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error if (err) { goto out; } - if (*obj) { + if (!*obj) { + goto out_obj; + } ''', c_name=c_name(name), name=name) tag_key = variants.tag_member.name if base: ret += mcgen(''' - visit_type_%(c_name)s_fields(m, (%(c_name)s **)obj, &err); - if (err) { - goto out_obj; - } + visit_type_%(c_name)s_fields(m, (%(c_name)s **)obj, &err); + if (err) { + goto out_obj; + } ''', c_name=c_name(base.name)) else: ret += mcgen(''' - visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "%(name)s", &err); - if (err) { - goto out_obj; - } + visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "%(name)s", &err); + if (err) { + goto out_obj; + } ''', c_type=variants.tag_member.type.c_name(), c_name=c_name(tag_key), name=tag_key) ret += mcgen(''' - if (!visit_start_union(m, !!(*obj)->data, &err) || err) { - goto out_obj; - } - switch ((*obj)->%(c_name)s) { + if (!visit_start_union(m, !!(*obj)->data, &err) || err) { + goto out_obj; + } + switch ((*obj)->%(c_name)s) { ''', c_name=c_name(tag_key)) @@ -295,34 +297,33 @@ void visit_type_%(c_name)s(Visitor *m, %(c_name)s **obj, const char *name, Error # TODO ugly special case for simple union simple_union_type = var.simple_union_type() ret += mcgen(''' - case %(case)s: + case %(case)s: ''', case=c_enum_const(variants.tag_member.type.name, var.name)) if simple_union_type: ret += mcgen(''' - visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "data", &err); + visit_type_%(c_type)s(m, &(*obj)->%(c_name)s, "data", &err); ''', c_type=simple_union_type.c_name(), c_name=c_name(var.name)) else: ret += mcgen(''' - visit_type_implicit_%(c_type)s(m, &(*obj)->%(c_name)s, &err); + visit_type_implicit_%(c_type)s(m, &(*obj)->%(c_name)s, &err); ''', c_type=var.type.c_name(), c_name=c_name(var.name)) ret += mcgen(''' - break; + break; ''') ret += mcgen(''' - default: - abort(); - } -out_obj: - error_propagate(errp, err); - err = NULL; - visit_end_union(m, !!(*obj)->data, &err); + default: + abort(); } +out_obj: + error_propagate(errp, err); + err = NULL; + visit_end_union(m, !!(*obj)->data, &err); visit_end_struct(m, err ? NULL : &err); out: error_propagate(errp, err); -- 2.4.3