mirror of
https://github.com/yuzu-mirror/unicorn.git
synced 2026-04-21 06:13:54 +00:00
qapi: Prepare for catching more semantic parse errors
This patch widens the scope of a try block (with the attending reindentation required by Python) in preparation for a future patch adding more instances of QAPIExprError inside the block. It's easier to separate indentation from semantic changes, so this patch has no real behavior change. Backports commit 268a1c5eb10832c2e4476d3fe199ea547dabecb7 from qemu
This commit is contained in:
parent
3ee6a0c88a
commit
9e87ec4b54
1 changed files with 20 additions and 17 deletions
|
|
@ -398,6 +398,7 @@ def check_exprs(schema):
|
|||
check_event(expr, info)
|
||||
|
||||
def parse_schema(input_file):
|
||||
# First pass: read entire file into memory
|
||||
try:
|
||||
schema = QAPISchema(open(input_file, "r"))
|
||||
except (QAPISchemaError, QAPIExprError), e:
|
||||
|
|
@ -406,24 +407,26 @@ def parse_schema(input_file):
|
|||
|
||||
exprs = []
|
||||
|
||||
for expr_elem in schema.exprs:
|
||||
expr = expr_elem['expr']
|
||||
if expr.has_key('enum'):
|
||||
add_enum(expr['enum'], expr.get('data'))
|
||||
elif expr.has_key('union'):
|
||||
add_union(expr)
|
||||
elif expr.has_key('type'):
|
||||
add_struct(expr)
|
||||
exprs.append(expr)
|
||||
|
||||
# Try again for hidden UnionKind enum
|
||||
for expr_elem in schema.exprs:
|
||||
expr = expr_elem['expr']
|
||||
if expr.has_key('union'):
|
||||
if not discriminator_find_enum_define(expr):
|
||||
add_enum('%sKind' % expr['union'])
|
||||
|
||||
try:
|
||||
# Next pass: learn the types.
|
||||
for expr_elem in schema.exprs:
|
||||
expr = expr_elem['expr']
|
||||
if expr.has_key('enum'):
|
||||
add_enum(expr['enum'], expr.get('data'))
|
||||
elif expr.has_key('union'):
|
||||
add_union(expr)
|
||||
elif expr.has_key('type'):
|
||||
add_struct(expr)
|
||||
exprs.append(expr)
|
||||
|
||||
# Try again for hidden UnionKind enum
|
||||
for expr_elem in schema.exprs:
|
||||
expr = expr_elem['expr']
|
||||
if expr.has_key('union'):
|
||||
if not discriminator_find_enum_define(expr):
|
||||
add_enum('%sKind' % expr['union'])
|
||||
|
||||
# Final pass - validate that exprs make sense
|
||||
check_exprs(schema)
|
||||
except QAPIExprError, e:
|
||||
print >>sys.stderr, e
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue