Eric Blake <ebl...@redhat.com> writes: > Now that we have a polymorphic visit_free(), we no longer need > qmp_input_visitor_cleanup(); which in turn means we no longer > need to return a subtype from qmp_input_visitor_new() nor a > public upcast function. > > Generated code changes to qmp-marshal look like:
qmp-marshal.c > > |@@ -52,11 +52,10 @@ void qmp_marshal_add_fd(QDict *args, QOb > | { > | Error *err = NULL; > | AddfdInfo *retval; > |- QmpInputVisitor *qiv = qmp_input_visitor_new(QOBJECT(args), true); > | Visitor *v; > | q_obj_add_fd_arg arg = {0}; > | > |- v = qmp_input_get_visitor(qiv); > |+ v = qmp_input_visitor_new(QOBJECT(args), true); > | visit_start_struct(v, NULL, NULL, 0, &err); > | if (err) { > | goto out; > > Signed-off-by: Eric Blake <ebl...@redhat.com> [...] > diff --git a/tests/check-qnull.c b/tests/check-qnull.c > index fd9c68f..c8021dc 100644 > --- a/tests/check-qnull.c > +++ b/tests/check-qnull.c > @@ -39,7 +39,7 @@ static void qnull_visit_test(void) > { > QObject *obj; > QmpOutputVisitor *qov; > - QmpInputVisitor *qiv; > + Visitor *qiv; Call it v instead of qiv? You do that elsewhere... Your choice. > > /* > * Most tests of interactions between QObject and visitors are in > @@ -51,8 +51,8 @@ static void qnull_visit_test(void) > obj = qnull(); > qiv = qmp_input_visitor_new(obj, true); > qobject_decref(obj); > - visit_type_null(qmp_input_get_visitor(qiv), NULL, &error_abort); > - qmp_input_visitor_cleanup(qiv); > + visit_type_null(qiv, NULL, &error_abort); > + visit_free(qiv); > > qov = qmp_output_visitor_new(); > visit_type_null(qmp_output_get_visitor(qov), NULL, &error_abort); [...]