diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py index 4ebed4c488..de7fc16fac 100644 --- a/scripts/qapi/expr.py +++ b/scripts/qapi/expr.py @@ -146,30 +146,29 @@ def check_flags(expr: _JSONObject, info: QAPISourceInfo) -> None: def check_if(expr: _JSONObject, info: QAPISourceInfo, source: str) -> None: - def check_if_str(ifcond: object) -> None: - if not isinstance(ifcond, str): + ifcond = expr.get('if') + if ifcond is None: + return + + if isinstance(ifcond, list): + if not ifcond: + raise QAPISemError( + info, "'if' condition [] of %s is useless" % source) + else: + # Normalize to a list + ifcond = expr['if'] = [ifcond] + + for elt in ifcond: + if not isinstance(elt, str): raise QAPISemError( info, "'if' condition of %s must be a string or a list of strings" % source) - if ifcond.strip() == '': + if not elt.strip(): raise QAPISemError( info, "'if' condition '%s' of %s makes no sense" - % (ifcond, source)) - - ifcond = expr.get('if') - if ifcond is None: - return - if isinstance(ifcond, list): - if ifcond == []: - raise QAPISemError( - info, "'if' condition [] of %s is useless" % source) - for elt in ifcond: - check_if_str(elt) - else: - check_if_str(ifcond) - expr['if'] = [ifcond] + % (elt, source)) def normalize_members(members: object) -> None: