mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
qapi: Test use of 'number' within alternates
Add some testsuite exposure for use of a 'number' as part of an alternate. The current state of the tree has a few bugs exposed by this: our input parser depends on the ordering of how the qapi schema declared the alternate, and the parser does not accept integers for a 'number' in an alternate even though it does for numbers outside of an alternate. Mixing 'int' and 'number' in the same alternate is unusual, since both are supplied by json-numbers, but there does not seem to be a technical reason to forbid it given that our json lexer distinguishes between json-numbers that can be represented as an int vs. those that cannot. Improve the existing test_visitor_in_alternate() to match the style of the new test_visitor_in_alternate_number(), and to ensure full coverage of all possible qtype parsing. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1443565276-4535-9-git-send-email-eblake@redhat.com> [Eric's follow-up fixes squashed in] Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
8d25dd101f
commit
9c51b44129
3 changed files with 160 additions and 3 deletions
|
@ -53,6 +53,30 @@ object :obj-user_def_cmd2-arg
|
|||
object :obj-user_def_cmd3-arg
|
||||
member a: int optional=False
|
||||
member b: int optional=True
|
||||
alternate AltIntNum
|
||||
case i: int
|
||||
case n: number
|
||||
enum AltIntNumKind ['i', 'n']
|
||||
alternate AltNumInt
|
||||
case n: number
|
||||
case i: int
|
||||
enum AltNumIntKind ['n', 'i']
|
||||
alternate AltNumStr
|
||||
case n: number
|
||||
case s: str
|
||||
enum AltNumStrKind ['n', 's']
|
||||
alternate AltStrBool
|
||||
case s: str
|
||||
case b: bool
|
||||
enum AltStrBoolKind ['s', 'b']
|
||||
alternate AltStrInt
|
||||
case s: str
|
||||
case i: int
|
||||
enum AltStrIntKind ['s', 'i']
|
||||
alternate AltStrNum
|
||||
case s: str
|
||||
case n: number
|
||||
enum AltStrNumKind ['s', 'n']
|
||||
event EVENT_A None
|
||||
event EVENT_B None
|
||||
event EVENT_C :obj-EVENT_C-arg
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue