qapi/expr.py: Check type of union and alternate 'data' member

Prior to this commit, specifying a non-object value here causes the QAPI
parser to crash in expr.py with a stack trace with (likely) an
AttributeError when we attempt to call that value's items() method.

This member needs to be an object (Dict), and not anything else. Add a
check for this with a nicer error message, and formalize that check with
new test cases that exercise that error.

Signed-off-by: John Snow <jsnow@redhat.com>
Message-Id: <20210421182032.3521476-8-jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
John Snow 2021-04-21 14:20:22 -04:00 committed by Markus Armbruster
parent 926bb8add7
commit 4918bb7def
8 changed files with 23 additions and 0 deletions

View file

@ -0,0 +1,2 @@
alternate-data-invalid.json: In alternate 'Alt':
alternate-data-invalid.json:2: 'data' must be an object