Lines Matching refs:expr
223 def check_flags(expr: QAPIExpression) -> None:
234 if key in expr and expr[key] is not False:
236 expr.info, "flag '%s' may only use false value" % key)
238 if key in expr and expr[key] is not True:
240 expr.info, "flag '%s' may only use true value" % key)
241 if 'allow-oob' in expr and 'coroutine' in expr:
247 expr.info, "flags 'allow-oob' and 'coroutine' are incompatible")
250 def check_if(expr: Dict[str, object],
306 ifcond = expr.get('if')
444 def check_enum(expr: QAPIExpression) -> None:
453 name = expr['enum']
454 members = expr['data']
455 prefix = expr.get('prefix')
456 info = expr.info
483 def check_struct(expr: QAPIExpression) -> None:
492 name = cast(str, expr['struct']) # Checked in check_exprs
493 members = expr['data']
495 check_type_implicit(members, expr.info, "'data'", name)
496 check_type_name(expr.get('base'), expr.info, "'base'")
499 def check_union(expr: QAPIExpression) -> None:
508 name = cast(str, expr['union']) # Checked in check_exprs
509 base = expr['base']
510 discriminator = expr['discriminator']
511 members = expr['data']
512 info = expr.info
527 def check_alternate(expr: QAPIExpression) -> None:
536 members = expr['data']
537 info = expr.info
553 def check_command(expr: QAPIExpression) -> None:
562 args = expr.get('data')
563 rets = expr.get('returns')
564 boxed = expr.get('boxed', False)
568 raise QAPISemError(expr.info, "'boxed': true requires 'data'")
569 check_type_name(args, expr.info, "'data'")
571 check_type_name_or_implicit(args, expr.info, "'data'", None)
572 check_type_name_or_array(rets, expr.info, "'returns'")
575 def check_event(expr: QAPIExpression) -> None:
584 args = expr.get('data')
585 boxed = expr.get('boxed', False)
589 raise QAPISemError(expr.info, "'boxed': true requires 'data'")
590 check_type_name(args, expr.info, "'data'")
592 check_type_name_or_implicit(args, expr.info, "'data'", None)
607 for expr in exprs:
608 info = expr.info
609 doc = expr.doc
611 if 'include' in expr:
614 metas = expr.keys() & {'enum', 'struct', 'union', 'alternate',
624 check_name_is_str(expr[meta], info, "'%s'" % meta)
625 name = cast(str, expr[meta])
633 doc.check_expr(expr)
639 check_keys(expr, info, meta,
641 check_enum(expr)
643 check_keys(expr, info, meta,
646 normalize_members(expr.get('base'))
647 normalize_members(expr['data'])
648 check_union(expr)
650 check_keys(expr, info, meta,
652 normalize_members(expr['data'])
653 check_alternate(expr)
655 check_keys(expr, info, meta,
657 normalize_members(expr['data'])
658 check_struct(expr)
660 check_keys(expr, info, meta,
665 normalize_members(expr.get('data'))
666 check_command(expr)
668 check_keys(expr, info, meta,
670 normalize_members(expr.get('data'))
671 check_event(expr)
675 check_if(expr, info, meta)
676 check_features(expr.get('features'), info)
677 check_flags(expr)