qapi: Fix C code generation for 'if'
When commit 5d83b9a130 "qapi: replace if condition list with dict {'all': [...]}" made cgen_ifcond() and docgen_ifcond() recursive, it messed up parenthesises in the former, and got them right in the latter, as the previous commit demonstrates. To fix, adopt the latter's working code for the former. This generates the correct code from the previous commit's commit message. Fixes: 5d83b9a130690f879d5f33e991beabe69cb88bc8 Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20210831123809.1107782-6-armbru@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
dd044023e6
commit
82ca72c023
@ -209,9 +209,9 @@ def cgen_ifcond(ifcond: Optional[Union[str, Dict[str, Any]]]) -> str:
|
|||||||
oper, operands = next(iter(ifcond.items()))
|
oper, operands = next(iter(ifcond.items()))
|
||||||
if oper == 'not':
|
if oper == 'not':
|
||||||
return '!' + cgen_ifcond(operands)
|
return '!' + cgen_ifcond(operands)
|
||||||
oper = {'all': '&&', 'any': '||'}[oper]
|
oper = {'all': ' && ', 'any': ' || '}[oper]
|
||||||
operands = [cgen_ifcond(o) for o in operands]
|
operands = [cgen_ifcond(o) for o in operands]
|
||||||
return '(' + (') ' + oper + ' (').join(operands) + ')'
|
return '(' + oper.join(operands) + ')'
|
||||||
|
|
||||||
|
|
||||||
def docgen_ifcond(ifcond: Optional[Union[str, Dict[str, Any]]]) -> str:
|
def docgen_ifcond(ifcond: Optional[Union[str, Dict[str, Any]]]) -> str:
|
||||||
|
@ -262,7 +262,6 @@
|
|||||||
'if': { 'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT'] } }
|
'if': { 'all': ['TEST_IF_EVT', 'TEST_IF_STRUCT'] } }
|
||||||
|
|
||||||
{ 'event': 'TEST_IF_EVENT2', 'data': {},
|
{ 'event': 'TEST_IF_EVENT2', 'data': {},
|
||||||
# FIXME C #if generated for this conditional is wrong
|
|
||||||
'if': { 'not': { 'any': [ { 'not': 'TEST_IF_EVT' },
|
'if': { 'not': { 'any': [ { 'not': 'TEST_IF_EVT' },
|
||||||
{ 'not': 'TEST_IF_STRUCT' } ] } } }
|
{ 'not': 'TEST_IF_STRUCT' } ] } } }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user