浏览代码

qapi: Fix error message when type name or array is expected

We incorrectly report "FOO should be a type name" when it could also
be an array.  Fix that.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20230316071325.492471-8-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Markus Armbruster 2 年之前
父节点
当前提交
6f2ab6090d

+ 7 - 8
scripts/qapi/expr.py

@@ -344,15 +344,14 @@ def check_type_name_or_array(value: Optional[object],
     if value is None or isinstance(value, str):
     if value is None or isinstance(value, str):
         return
         return
 
 
-    if isinstance(value, list):
-        if len(value) != 1 or not isinstance(value[0], str):
-            raise QAPISemError(info,
-                               "%s: array type must contain single type name" %
-                               source)
-        return
+    if not isinstance(value, list):
+        raise QAPISemError(info,
+                           "%s should be a type name or array" % source)
 
 
-    raise QAPISemError(info,
-                       "%s should be a type name" % source)
+    if len(value) != 1 or not isinstance(value[0], str):
+        raise QAPISemError(info,
+                           "%s: array type must contain single type name" %
+                           source)
 
 
 
 
 def check_type_name_or_implicit(value: Optional[object],
 def check_type_name_or_implicit(value: Optional[object],

+ 1 - 1
tests/qapi-schema/event-nest-struct.err

@@ -1,2 +1,2 @@
 event-nest-struct.json: In event 'EVENT_A':
 event-nest-struct.json: In event 'EVENT_A':
-event-nest-struct.json:1: 'data' member 'a' should be a type name
+event-nest-struct.json:1: 'data' member 'a' should be a type name or array

+ 1 - 1
tests/qapi-schema/nested-struct-data.err

@@ -1,2 +1,2 @@
 nested-struct-data.json: In command 'foo':
 nested-struct-data.json: In command 'foo':
-nested-struct-data.json:2: 'data' member 'a' should be a type name
+nested-struct-data.json:2: 'data' member 'a' should be a type name or array

+ 1 - 1
tests/qapi-schema/returns-dict.err

@@ -1,2 +1,2 @@
 returns-dict.json: In command 'oops':
 returns-dict.json: In command 'oops':
-returns-dict.json:2: 'returns' should be a type name
+returns-dict.json:2: 'returns' should be a type name or array

+ 1 - 1
tests/qapi-schema/struct-member-invalid.err

@@ -1,2 +1,2 @@
 struct-member-invalid.json: In struct 'Foo':
 struct-member-invalid.json: In struct 'Foo':
-struct-member-invalid.json:1: 'data' member 'a' should be a type name
+struct-member-invalid.json:1: 'data' member 'a' should be a type name or array