Skip to content

Commit

Permalink
qapi: Prepare for errors during check()
Browse files Browse the repository at this point in the history
The next few patches will start migrating error checking from
ad hoc parse methods into the QAPISchema*.check() methods.  But
for an error message to display, we first have to fix the
overall 'try' to catch those errors.  We also want to enable a
few more assertions, such as making sure every attempt to
raise a semantic error is passed a valid location info, or that
various preconditions hold.

The general approach for moving error checking will then be to
relax an assertion into an if that raises an exception if the
condition does not hold, and removing the counterpart ad hoc
check done during the parse phase.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1444710158-8723-3-git-send-email-eblake@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
  • Loading branch information
ebblake authored and Markus Armbruster committed Oct 15, 2015
1 parent 25a0d9c commit 7618b91
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions scripts/qapi.py
Expand Up @@ -103,6 +103,7 @@ def __str__(self):
class QAPIExprError(Exception):
def __init__(self, expr_info, msg):
Exception.__init__(self)
assert expr_info
self.info = expr_info
self.msg = msg

Expand Down Expand Up @@ -964,6 +965,7 @@ def check(self, schema):
members = []
seen = {}
for m in members:
assert c_name(m.name) not in seen
seen[m.name] = m
for m in self.local_members:
m.check(schema, members, seen)
Expand Down Expand Up @@ -1116,13 +1118,13 @@ class QAPISchema(object):
def __init__(self, fname):
try:
self.exprs = check_exprs(QAPISchemaParser(open(fname, "r")).exprs)
self._entity_dict = {}
self._def_predefineds()
self._def_exprs()
self.check()
except (QAPISchemaError, QAPIExprError), err:
print >>sys.stderr, err
exit(1)
self._entity_dict = {}
self._def_predefineds()
self._def_exprs()
self.check()

def _def_entity(self, ent):
assert ent.name not in self._entity_dict
Expand Down

0 comments on commit 7618b91

Please sign in to comment.