[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 15/19] qapi/schema: assert inner type of QAPISchemaVariants in
From: |
John Snow |
Subject: |
[PATCH v2 15/19] qapi/schema: assert inner type of QAPISchemaVariants in check_clash() |
Date: |
Fri, 12 Jan 2024 17:29:41 -0500 |
QAPISchemaVariant's "variants" field is typed as
List[QAPISchemaVariant], where the typing for QAPISchemaVariant allows
its type field to be any QAPISchemaType.
However, QAPISchemaVariant expects that all of its variants contain the
narrower QAPISchemaObjectType. This relationship is enforced at runtime
in QAPISchemaVariants.check(). This relationship is not embedded in the
type system though, so QAPISchemaVariants.check_clash() needs to
re-assert this property in order to call
QAPISchemaVariant.type.check_clash().
Signed-off-by: John Snow <jsnow@redhat.com>
---
scripts/qapi/schema.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
index 6afafdb8b0d..f2271dc7cbd 100644
--- a/scripts/qapi/schema.py
+++ b/scripts/qapi/schema.py
@@ -725,7 +725,10 @@ def check(self, schema, seen):
def check_clash(self, info, seen):
for v in self.variants:
# Reset seen map for each variant, since qapi names from one
- # branch do not affect another branch
+ # branch do not affect another branch.
+ #
+ # v.type's typing is enforced in check() above.
+ assert isinstance(v.type, QAPISchemaObjectType)
v.type.check_clash(info, dict(seen))
--
2.43.0
- Re: [PATCH v2 05/19] qapi/schema: declare type for QAPISchemaArrayType.element_type, (continued)
- [PATCH v2 14/19] qapi/schema: fix typing for QAPISchemaVariants.tag_member, John Snow, 2024/01/12
- [PATCH v2 15/19] qapi/schema: assert inner type of QAPISchemaVariants in check_clash(),
John Snow <=
- [PATCH v2 12/19] qapi/schema: assert info is present when necessary, John Snow, 2024/01/12
- [PATCH v2 18/19] qapi/schema: turn on mypy strictness, John Snow, 2024/01/12
- [PATCH v2 19/19] qapi/schema: remove unnecessary asserts, John Snow, 2024/01/12
- [PATCH v2 10/19] qapi: use schema.resolve_type instead of schema.lookup_type, John Snow, 2024/01/12
- [PATCH v2 07/19] qapi/schema: adjust type narrowing for mypy's benefit, John Snow, 2024/01/12
- [PATCH v2 16/19] qapi/parser: demote QAPIExpression to Dict[str, Any], John Snow, 2024/01/12
- [PATCH v2 09/19] qapi/schema: allow resolve_type to be used for built-in types, John Snow, 2024/01/12