[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 17/28] qapi: Allow true, false and null in sc
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v5 17/28] qapi: Allow true, false and null in schema json |
Date: |
Thu, 26 Mar 2015 18:32:26 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Eric Blake <address@hidden> writes:
> From: Fam Zheng <address@hidden>
>
> In the near term, we will use it for a sensible-looking
> 'gen':false inside command declarations, instead of the
> current ugly 'gen':'no'.
>
> In the long term, it will allow conversion from shorthand
> with defaults mentioned only in side-band documentation:
> 'data':{'*flag':'bool', '*string':'str'}
> into an explicit default value documentation, as in:
> 'data':{'flag':{'type':'bool', 'optional':true, 'default':true},
> 'string':{'type':'str', 'optional':true, 'default':null}}
>
> We still don't parse integer values (also necessary before
> we can allow explicit defaults), but that can come in a later
> series.
>
> Update the testsuite to match an improved error message.
>
> Signed-off-by: Fam Zheng <address@hidden>
> Signed-off-by: Eric Blake <address@hidden>
> ---
> scripts/qapi.py | 21 ++++++++++++++++++---
> tests/qapi-schema/bad-type-bool.err | 2 +-
> tests/qapi-schema/bad-type-bool.json | 1 -
> 3 files changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/qapi.py b/scripts/qapi.py
> index 5d0dc91..6ed6a34 100644
> --- a/scripts/qapi.py
> +++ b/scripts/qapi.py
> @@ -158,6 +158,20 @@ class QAPISchema:
> return
> else:
> string += ch
> + elif self.tok in "tfn":
> + val = self.src[self.cursor - 1:]
> + if val.startswith("true"):
> + self.val = True
> + self.cursor += 3
> + return
> + elif val.startswith("false"):
> + self.val = False
> + self.cursor += 4
> + return
> + elif val.startswith("null"):
> + self.val = None
> + self.cursor += 3
> + return
> elif self.tok == '\n':
> if self.cursor == len(self.src):
> self.tok = None
> @@ -197,8 +211,9 @@ class QAPISchema:
> if self.tok == ']':
> self.accept()
> return expr
> - if not self.tok in [ '{', '[', "'" ]:
> - raise QAPISchemaError(self, 'Expected "{", "[", "]" or string')
> + if not self.tok in "{['tfn":
> + raise QAPISchemaError(self, 'Expected "{", "[", "]", string, '
> + 'boolean or "null"')
> while True:
> expr.append(self.get_expr(True))
> if self.tok == ']':
> @@ -217,7 +232,7 @@ class QAPISchema:
> elif self.tok == '[':
> self.accept()
> expr = self.get_values()
> - elif self.tok == "'":
> + elif self.tok in "'tfn":
> expr = self.val
> self.accept()
> else:
Exploiting that the three literal names start with different letters is
a a hack, but it'll do.
Reviewed-by: Markus Armbruster <address@hidden>
[...]
- Re: [Qemu-devel] [PATCH v5 13/28] qapi: Add some expr tests, (continued)
[Qemu-devel] [PATCH v5 18/28] qapi: Unify type bypass and add tests, Eric Blake, 2015/03/24
[Qemu-devel] [PATCH v5 11/28] qapi: Rename anonymous union type in test, Eric Blake, 2015/03/24
[Qemu-devel] [PATCH v5 17/28] qapi: Allow true, false and null in schema json, Eric Blake, 2015/03/24
[Qemu-devel] [PATCH v5 05/28] qapi: Better error messages for bad enums, Eric Blake, 2015/03/24
[Qemu-devel] [PATCH v5 15/28] qapi: Add tests of redefined expressions, Eric Blake, 2015/03/24
[Qemu-devel] [PATCH v5 14/28] qapi: Better error messages for bad expressions, Eric Blake, 2015/03/24
[Qemu-devel] [PATCH v5 06/28] qapi: Add some union tests, Eric Blake, 2015/03/24