[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 15/30] qapi: Record 'include' directives in parse tre
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PULL 15/30] qapi: Record 'include' directives in parse tree |
Date: |
Thu, 1 Mar 2018 13:42:30 -0600 |
From: Markus Armbruster <address@hidden>
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>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
[eblake: fix check of expr after assignment]
Signed-off-by: Eric Blake <address@hidden>
---
scripts/qapi/common.py | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py
index 1d0d30f9ece..961331a210c 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")
@@ -932,6 +937,9 @@ def check_exprs(exprs):
# Try again for hidden UnionKind enum
for expr_elem in exprs:
expr = expr_elem['expr']
+
+ if 'include' in expr:
+ continue
if 'union' in expr and not discriminator_find_enum_define(expr):
name = '%sKind' % expr['union']
elif 'alternate' in expr:
@@ -947,6 +955,8 @@ def check_exprs(exprs):
info = expr_elem['info']
doc = expr_elem.get('doc')
+ if 'include' in expr:
+ continue
if 'enum' in expr:
check_enum(expr, info)
elif 'union' in expr:
@@ -1667,6 +1677,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.14.3
- [Qemu-devel] [PULL 04/30] qapi: Rename variable holding the QAPISchemaGenFOOVisitor, (continued)
- [Qemu-devel] [PULL 04/30] qapi: Rename variable holding the QAPISchemaGenFOOVisitor, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 03/30] qapi: Generate up-to-date copyright notice, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 02/30] qapi: Streamline boilerplate comment generation, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 07/30] qapi: Turn generators into modules, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 09/30] qapi-gen: Convert from getopt to argparse, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 05/30] qapi: New classes QAPIGenC, QAPIGenH, QAPIGenDoc, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 06/30] qapi: Reduce use of global variables in generators some, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 10/30] qapi: Touch generated files only when they change, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 12/30] qapi/common: Eliminate QAPISchema.exprs, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 13/30] qapi: Lift error reporting from QAPISchema.__init__() to callers, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 15/30] qapi: Record 'include' directives in parse tree,
Eric Blake <=
- [Qemu-devel] [PULL 11/30] qapi: Improve include file name reporting in error messages, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 08/30] qapi-gen: New common driver for code and doc generators, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 14/30] qapi: Concentrate QAPISchemaParser.exprs updates in .__init__(), Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 16/30] qapi: Generate in source order, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 17/30] qapi: Record 'include' directives in intermediate representation, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 18/30] qapi: Rename generated qmp-marshal.c to qmp-commands.c, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 21/30] qapi/common: Fix guardname() for funny filenames, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 20/30] qapi/types qapi/visit: Generate built-in stuff into separate files, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 19/30] qapi: Make code-generating visitors use QAPIGen more, Eric Blake, 2018/03/01
- [Qemu-devel] [PULL 22/30] qapi: Generate separate .h, .c for each module, Eric Blake, 2018/03/01