qapi: Eliminate check_docs() and drop QAPIDoc.expr
Move what's left in check_docs() to check_expr(). Delegate the actual checking to new QAPIDoc.check_expr(). QAPIDoc.expr is now unused; drop it. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <1489582656-31133-39-git-send-email-armbru@redhat.com>
This commit is contained in:
parent
816a57cd6e
commit
a9f396b028
|
@ -138,8 +138,6 @@ class QAPIDoc(object):
|
||||||
self.sections = []
|
self.sections = []
|
||||||
# the current section
|
# the current section
|
||||||
self.section = self.body
|
self.section = self.body
|
||||||
# associated expression (to be set by expression parser)
|
|
||||||
self.expr = None
|
|
||||||
|
|
||||||
def has_section(self, name):
|
def has_section(self, name):
|
||||||
"""Return True if we have a section with this name."""
|
"""Return True if we have a section with this name."""
|
||||||
|
@ -249,6 +247,11 @@ class QAPIDoc(object):
|
||||||
self.args[member.name] = QAPIDoc.ArgSection(member.name)
|
self.args[member.name] = QAPIDoc.ArgSection(member.name)
|
||||||
self.args[member.name].connect(member)
|
self.args[member.name].connect(member)
|
||||||
|
|
||||||
|
def check_expr(self, expr):
|
||||||
|
if self.has_section('Returns') and 'command' not in expr:
|
||||||
|
raise QAPISemError(self.info,
|
||||||
|
"'Returns:' is only valid for commands")
|
||||||
|
|
||||||
def check(self):
|
def check(self):
|
||||||
bogus = [name for name, section in self.args.iteritems()
|
bogus = [name for name, section in self.args.iteritems()
|
||||||
if not section.member]
|
if not section.member]
|
||||||
|
@ -316,7 +319,6 @@ class QAPISchemaParser(object):
|
||||||
raise QAPISemError(
|
raise QAPISemError(
|
||||||
self.cur_doc.info,
|
self.cur_doc.info,
|
||||||
"Expression documentation required")
|
"Expression documentation required")
|
||||||
self.cur_doc.expr = expr
|
|
||||||
expr_elem['doc'] = self.cur_doc
|
expr_elem['doc'] = self.cur_doc
|
||||||
self.exprs.append(expr_elem)
|
self.exprs.append(expr_elem)
|
||||||
self.cur_doc = None
|
self.cur_doc = None
|
||||||
|
@ -984,6 +986,7 @@ def check_exprs(exprs):
|
||||||
for expr_elem in exprs:
|
for expr_elem in exprs:
|
||||||
expr = expr_elem['expr']
|
expr = expr_elem['expr']
|
||||||
info = expr_elem['info']
|
info = expr_elem['info']
|
||||||
|
doc = expr_elem.get('doc')
|
||||||
|
|
||||||
if 'enum' in expr:
|
if 'enum' in expr:
|
||||||
check_enum(expr, info)
|
check_enum(expr, info)
|
||||||
|
@ -1000,22 +1003,12 @@ def check_exprs(exprs):
|
||||||
else:
|
else:
|
||||||
assert False, 'unexpected meta type'
|
assert False, 'unexpected meta type'
|
||||||
|
|
||||||
|
if doc:
|
||||||
|
doc.check_expr(expr)
|
||||||
|
|
||||||
return exprs
|
return exprs
|
||||||
|
|
||||||
|
|
||||||
def check_definition_doc(doc, expr, info):
|
|
||||||
if doc.has_section('Returns') and 'command' not in expr:
|
|
||||||
raise QAPISemError(info, "'Returns:' is only valid for commands")
|
|
||||||
|
|
||||||
|
|
||||||
def check_docs(docs):
|
|
||||||
for doc in docs:
|
|
||||||
if doc.expr:
|
|
||||||
check_definition_doc(doc, doc.expr, doc.info)
|
|
||||||
|
|
||||||
return docs
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Schema compiler frontend
|
# Schema compiler frontend
|
||||||
#
|
#
|
||||||
|
@ -1511,7 +1504,7 @@ class QAPISchema(object):
|
||||||
try:
|
try:
|
||||||
parser = QAPISchemaParser(open(fname, 'r'))
|
parser = QAPISchemaParser(open(fname, 'r'))
|
||||||
self.exprs = check_exprs(parser.exprs)
|
self.exprs = check_exprs(parser.exprs)
|
||||||
self.docs = check_docs(parser.docs)
|
self.docs = parser.docs
|
||||||
self._entity_dict = {}
|
self._entity_dict = {}
|
||||||
self._predefining = True
|
self._predefining = True
|
||||||
self._def_predefineds()
|
self._def_predefineds()
|
||||||
|
|
Loading…
Reference in a new issue