mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -06:00
qapi.py: Fix diagnosing non-objects at a schema's top-level
Report syntax error instead of crashing. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 1374939721-7876-8-git-send-email-armbru@redhat.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
6974ccd542
commit
5f3cd2b717
3 changed files with 8 additions and 6 deletions
|
@ -64,7 +64,7 @@ class QAPISchema:
|
||||||
self.accept()
|
self.accept()
|
||||||
|
|
||||||
while self.tok != None:
|
while self.tok != None:
|
||||||
self.exprs.append(self.get_expr())
|
self.exprs.append(self.get_expr(False))
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
while True:
|
while True:
|
||||||
|
@ -117,7 +117,7 @@ class QAPISchema:
|
||||||
if self.tok != ':':
|
if self.tok != ':':
|
||||||
raise QAPISchemaError(self, 'Expected ":"')
|
raise QAPISchemaError(self, 'Expected ":"')
|
||||||
self.accept()
|
self.accept()
|
||||||
expr[key] = self.get_expr()
|
expr[key] = self.get_expr(True)
|
||||||
if self.tok == '}':
|
if self.tok == '}':
|
||||||
self.accept()
|
self.accept()
|
||||||
return expr
|
return expr
|
||||||
|
@ -135,7 +135,7 @@ class QAPISchema:
|
||||||
if not self.tok in [ '{', '[', "'" ]:
|
if not self.tok in [ '{', '[', "'" ]:
|
||||||
raise QAPISchemaError(self, 'Expected "{", "[", "]" or string')
|
raise QAPISchemaError(self, 'Expected "{", "[", "]" or string')
|
||||||
while True:
|
while True:
|
||||||
expr.append(self.get_expr())
|
expr.append(self.get_expr(True))
|
||||||
if self.tok == ']':
|
if self.tok == ']':
|
||||||
self.accept()
|
self.accept()
|
||||||
return expr
|
return expr
|
||||||
|
@ -143,7 +143,9 @@ class QAPISchema:
|
||||||
raise QAPISchemaError(self, 'Expected "," or "]"')
|
raise QAPISchemaError(self, 'Expected "," or "]"')
|
||||||
self.accept()
|
self.accept()
|
||||||
|
|
||||||
def get_expr(self):
|
def get_expr(self, nested):
|
||||||
|
if self.tok != '{' and not nested:
|
||||||
|
raise QAPISchemaError(self, 'Expected "{"')
|
||||||
if self.tok == '{':
|
if self.tok == '{':
|
||||||
self.accept()
|
self.accept()
|
||||||
expr = self.get_members()
|
expr = self.get_members()
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Crashed: <type 'exceptions.AttributeError'>
|
<stdin>:1:1: Expected "{"
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Crashed: <type 'exceptions.AttributeError'>
|
<stdin>:1:1: Expected "{"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue