[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 15/29] qapi: Record 'include' directives in p
From: |
Michael Roth |
Subject: |
Re: [Qemu-devel] [PATCH v2 15/29] qapi: Record 'include' directives in parse tree |
Date: |
Sun, 18 Feb 2018 17:57:12 -0600 |
User-agent: |
alot/0.6 |
Quoting Markus Armbruster (2018-02-11 03:35:53)
> The parse tree is a list of expressions. Except include expressions
> currently get replaced by the included file's parse tree.
>
> Instead of throwing away the include expression, keep it with the file
> name expanded so you don't have to track the including file's
> directory to make sense of it.
>
> A future commit will put this include expression to use.
>
> Signed-off-by: Markus Armbruster <address@hidden>
> Reviewed-by: Marc-André Lureau <address@hidden>
> ---
> scripts/qapi/common.py | 21 +++++++++++++++++----
> 1 file changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
> index cc5a5941dd..6d49709784 100644
> --- a/scripts/qapi/common.py
> +++ b/scripts/qapi/common.py
> @@ -290,8 +290,11 @@ class QAPISchemaParser(object):
> if not isinstance(include, str):
> raise QAPISemError(info,
> "Value of 'include' must be a string")
> - exprs_include = self._include(include, info,
> - os.path.dirname(self.fname),
> + incl_fname = os.path.join(os.path.dirname(self.fname),
> + include)
> + self.exprs.append({'expr': {'include': incl_fname},
> + 'info': info})
> + exprs_include = self._include(include, info, incl_fname,
> previously_included)
> if exprs_include:
> self.exprs.extend(exprs_include.exprs)
> @@ -326,8 +329,7 @@ class QAPISchemaParser(object):
> "Documentation for '%s' is not followed by the definition"
> % doc.symbol)
>
> - def _include(self, include, info, base_dir, previously_included):
> - incl_fname = os.path.join(base_dir, include)
> + def _include(self, include, info, incl_fname, previously_included):
> incl_abs_fname = os.path.abspath(incl_fname)
> # catch inclusion cycle
> inf = info
> @@ -893,6 +895,9 @@ def check_exprs(exprs):
> info = expr_elem['info']
> doc = expr_elem.get('doc')
>
> + if 'include' in expr:
> + continue
> +
> if not doc and doc_required:
> raise QAPISemError(info,
> "Expression missing documentation comment")
> @@ -931,6 +936,9 @@ def check_exprs(exprs):
>
> # Try again for hidden UnionKind enum
> for expr_elem in exprs:
> + if 'include' in expr:
> + continue
> +
Wouldn't this ^
> expr = expr_elem['expr']
Need to come after this?
> if 'union' in expr and not discriminator_find_enum_define(expr):
> name = '%sKind' % expr['union']
> @@ -943,6 +951,9 @@ def check_exprs(exprs):
>
> # Validate that exprs make sense
> for expr_elem in exprs:
> + if 'include' in expr:
> + continue
> +
> expr = expr_elem['expr']
And here.
> info = expr_elem['info']
> doc = expr_elem.get('doc')
> @@ -1667,6 +1678,8 @@ class QAPISchema(object):
> self._def_command(expr, info, doc)
> elif 'event' in expr:
> self._def_event(expr, info, doc)
> + elif 'include' in expr:
> + pass
> else:
> assert False
>
> --
> 2.13.6
>
- Re: [Qemu-devel] [PATCH v2 19/29] qapi: Make code-generating visitors use QAPIGen more, (continued)
- [Qemu-devel] [PATCH v2 27/29] qapi: Move qapi-schema.json to qapi/, rename generated files, Markus Armbruster, 2018/02/11
- [Qemu-devel] [PATCH v2 15/29] qapi: Record 'include' directives in parse tree, Markus Armbruster, 2018/02/11
- [Qemu-devel] [PATCH v2 16/29] qapi: Generate in source order, Markus Armbruster, 2018/02/11
- [Qemu-devel] [PATCH v2 08/29] qapi-gen: New common driver for code and doc generators, Markus Armbruster, 2018/02/11
- Re: [Qemu-devel] [PATCH v2 08/29] qapi-gen: New common driver for code and doc generators, Michael Roth, 2018/02/19
- [Qemu-devel] [PATCH v2 22/29] qapi: Generate separate .h, .c for each module, Markus Armbruster, 2018/02/11