[PATCH v2 16/30] qapi/schema: Change _make_features() to a take feature list

Markus Armbruster armbru at redhat.com
Tue Mar 3 16:34:51 UTC 2020


QAPISchema._make_features() takes a definition expression, and
extracts its 'features' member.  The other ._make_FOO() leave
destructuring expressions to their callers.  Change ._make_features()
to match them.

Signed-off-by: Markus Armbruster <armbru at redhat.com>
---
 scripts/qapi/schema.py | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
index e3353989e9..2ab6dc67e4 100644
--- a/scripts/qapi/schema.py
+++ b/scripts/qapi/schema.py
@@ -905,8 +905,9 @@ class QAPISchema:
         self._def_entity(QAPISchemaEnumType('QType', None, None, None, None,
                                             qtype_values, 'QTYPE'))
 
-    def _make_features(self, expr, info):
-        features = expr.get('features', [])
+    def _make_features(self, features, info):
+        if features is None:
+            return []
         return [QAPISchemaFeature(f['name'], info, f.get('if'))
                 for f in features]
 
@@ -956,7 +957,7 @@ class QAPISchema:
         data = expr['data']
         prefix = expr.get('prefix')
         ifcond = expr.get('if')
-        features = self._make_features(expr, info)
+        features = self._make_features(expr.get('features'), info)
         self._def_entity(QAPISchemaEnumType(
             name, info, doc, ifcond, features,
             self._make_enum_members(data, info), prefix))
@@ -980,7 +981,7 @@ class QAPISchema:
         base = expr.get('base')
         data = expr['data']
         ifcond = expr.get('if')
-        features = self._make_features(expr, info)
+        features = self._make_features(expr.get('features'), info)
         self._def_entity(QAPISchemaObjectType(
             name, info, doc, ifcond, features, base,
             self._make_members(data, info),
@@ -1003,7 +1004,7 @@ class QAPISchema:
         data = expr['data']
         base = expr.get('base')
         ifcond = expr.get('if')
-        features = self._make_features(expr, info)
+        features = self._make_features(expr.get('features'), info)
         tag_name = expr.get('discriminator')
         tag_member = None
         if isinstance(base, dict):
@@ -1033,7 +1034,7 @@ class QAPISchema:
         name = expr['alternate']
         data = expr['data']
         ifcond = expr.get('if')
-        features = self._make_features(expr, info)
+        features = self._make_features(expr.get('features'), info)
         variants = [self._make_variant(key, value['type'], value.get('if'),
                                        info)
                     for (key, value) in data.items()]
@@ -1053,7 +1054,7 @@ class QAPISchema:
         allow_oob = expr.get('allow-oob', False)
         allow_preconfig = expr.get('allow-preconfig', False)
         ifcond = expr.get('if')
-        features = self._make_features(expr, info)
+        features = self._make_features(expr.get('features'), info)
         if isinstance(data, OrderedDict):
             data = self._make_implicit_object_type(
                 name, info, ifcond,
@@ -1071,7 +1072,7 @@ class QAPISchema:
         data = expr.get('data')
         boxed = expr.get('boxed', False)
         ifcond = expr.get('if')
-        features = self._make_features(expr, info)
+        features = self._make_features(expr.get('features'), info)
         if isinstance(data, OrderedDict):
             data = self._make_implicit_object_type(
                 name, info, ifcond,
-- 
2.21.1




More information about the libvir-list mailing list