diff options
author | Marc-André Lureau | 2021-08-04 10:31:05 +0200 |
---|---|---|
committer | Markus Armbruster | 2021-08-26 13:53:56 +0200 |
commit | 8a9f1e1d9cc55f5eb0946cbf8fd1ef9a0e7d3dac (patch) | |
tree | 11ccd49b95bbad5e049e02d0283266dfb9f883dd /scripts/qapi | |
parent | qapi: add 'not' condition operation (diff) | |
download | qemu-8a9f1e1d9cc55f5eb0946cbf8fd1ef9a0e7d3dac.tar.gz qemu-8a9f1e1d9cc55f5eb0946cbf8fd1ef9a0e7d3dac.tar.xz qemu-8a9f1e1d9cc55f5eb0946cbf8fd1ef9a0e7d3dac.zip |
qapi: make 'if' condition strings simple identifiers
Change the 'if' condition strings to be C-agnostic. It will accept
'[A-Z][A-Z0-9_]*' identifiers. This allows to express configuration
conditions in other languages (Rust or Python for ex) or other more
suitable forms.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Tested-by: John Snow <jsnow@redhat.com>
Message-Id: <20210804083105.97531-11-marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
[Rebased with semantic conflict in redefined-event.json]
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'scripts/qapi')
-rw-r--r-- | scripts/qapi/common.py | 2 | ||||
-rw-r--r-- | scripts/qapi/expr.py | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py index 3fb2fbe7d4..1724ac32db 100644 --- a/scripts/qapi/common.py +++ b/scripts/qapi/common.py @@ -204,7 +204,7 @@ def cgen_ifcond(ifcond: Union[str, Dict[str, Any]]) -> str: if not ifcond: return '' if isinstance(ifcond, str): - return ifcond + return 'defined(' + ifcond + ')' oper, operands = next(iter(ifcond.items())) if oper == 'not': diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py index 120b31089f..019f4c97aa 100644 --- a/scripts/qapi/expr.py +++ b/scripts/qapi/expr.py @@ -275,10 +275,10 @@ def check_if(expr: _JSONObject, info: QAPISourceInfo, source: str) -> None: def _check_if(cond: Union[str, object]) -> None: if isinstance(cond, str): - if not cond.strip(): + if not re.match(r'^[A-Z][A-Z0-9_]*$', cond): raise QAPISemError( info, - "'if' condition '%s' of %s makes no sense" + "'if' condition '%s' of %s is not a valid identifier" % (cond, source)) return |