[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 6/6] qapi: remove JSON value FIXME
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v4 6/6] qapi: remove JSON value FIXME |
Date: |
Wed, 15 Feb 2023 12:13:24 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
John Snow <jsnow@redhat.com> writes:
> With the two major JSON-ish type hierarchies clarified for distinct
> purposes; QAPIExpression for parsed expressions and JSONValue for
> introspection data, remove this FIXME as no longer an action item.
>
> A third JSON-y data type, _ExprValue, is not meant to represent JSON in
> the abstract but rather only the possible legal return values from a
> single function, get_expr(). It isn't appropriate to attempt to merge it
> with either of the above two types.
>
> In theory, it may be possible to define a completely agnostic
> one-size-fits-all JSON type hierarchy that any other user could borrow -
> in practice, it's tough to wrangle the differences between invariant,
> covariant and contravariant types: input and output parameters demand
> different properties of such a structure.
>
> However, QAPIExpression serves to authoritatively type user input to the
> QAPI parser, while JSONValue serves to authoritatively type qapi
> generator *output* to be served back to client users at runtime via
> QMP. The AST for these two types are different and cannot be wholly
> merged into a unified syntax.
>
> They could, in theory, share some JSON primitive definitions. In
> practice, this is currently more trouble than it's worth with mypy's
> current expressive power. As such, declare this "done enough for now".
>
> Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
- [PATCH v4 0/6] qapi: static typing conversion, pt5c, John Snow, 2023/02/14
- [PATCH v4 5/6] qapi: remove _JSONObject, John Snow, 2023/02/14
- [PATCH v4 4/6] qapi/parser: add QAPIExpression type, John Snow, 2023/02/14
- Re: [PATCH v4 0/6] qapi: static typing conversion, pt5c, Markus Armbruster, 2023/02/15