qapi: Avoid redundant parens in code generated for conditionals

Commit 6cc2e4817f "qapi: introduce QAPISchemaIfCond.cgen()" caused a
minor regression: redundant parenthesis.  Subsequent commits
eliminated of many of them, but not all.  Get rid of the rest now.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20210831123809.1107782-8-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
Markus Armbruster 2021-08-31 14:38:04 +02:00
parent ccea6a8637
commit a7987799d1
2 changed files with 9 additions and 7 deletions

View File

@ -205,24 +205,26 @@ def gen_ifcond(ifcond: Optional[Union[str, Dict[str, Any]]],
cond_fmt: str, not_fmt: str, cond_fmt: str, not_fmt: str,
all_operator: str, any_operator: str) -> str: all_operator: str, any_operator: str) -> str:
def do_gen(ifcond: Union[str, Dict[str, Any]]): def do_gen(ifcond: Union[str, Dict[str, Any]], need_parens: bool):
if isinstance(ifcond, str): if isinstance(ifcond, str):
return cond_fmt % ifcond return cond_fmt % ifcond
assert isinstance(ifcond, dict) and len(ifcond) == 1 assert isinstance(ifcond, dict) and len(ifcond) == 1
if 'not' in ifcond: if 'not' in ifcond:
return not_fmt % do_gen(ifcond['not']) return not_fmt % do_gen(ifcond['not'], True)
if 'all' in ifcond: if 'all' in ifcond:
gen = gen_infix(all_operator, ifcond['all']) gen = gen_infix(all_operator, ifcond['all'])
else: else:
gen = gen_infix(any_operator, ifcond['any']) gen = gen_infix(any_operator, ifcond['any'])
if need_parens:
gen = '(' + gen + ')'
return gen return gen
def gen_infix(operator: str, operands: Sequence[Any]) -> str: def gen_infix(operator: str, operands: Sequence[Any]) -> str:
return '(' + operator.join([do_gen(o) for o in operands]) + ')' return operator.join([do_gen(o, True) for o in operands])
if not ifcond: if not ifcond:
return '' return ''
return do_gen(ifcond) return do_gen(ifcond, False)
def cgen_ifcond(ifcond: Optional[Union[str, Dict[str, Any]]]) -> str: def cgen_ifcond(ifcond: Optional[Union[str, Dict[str, Any]]]) -> str:

View File

@ -79,7 +79,7 @@ Members
If If
~~ ~~
"(IFALL1 and IFALL2)" "IFALL1 and IFALL2"
"Variant1" (Object) "Variant1" (Object)
@ -120,8 +120,8 @@ Members
The members of "Base" The members of "Base"
The members of "Variant1" when "base1" is ""one"" The members of "Variant1" when "base1" is ""one""
The members of "Variant2" when "base1" is ""two"" (**If: **"(IFONE or The members of "Variant2" when "base1" is ""two"" (**If: **"IFONE or
IFTWO)") IFTWO")
Features Features
~~~~~~~~ ~~~~~~~~