@@ -227,10 +227,10 @@ def _use_type(self, typ: QAPISchemaType) -> str:
# Map the various integer types to plain int
if typ.json_type() == 'int':
- typ = self._schema.lookup_type('int')
+ typ = self._schema.resolve_type('int')
elif (isinstance(typ, QAPISchemaArrayType) and
typ.element_type.json_type() == 'int'):
- typ = self._schema.lookup_type('intList')
+ typ = self._schema.resolve_type('intList')
# Add type to work queue if new
if typ not in self._used_types:
self._used_types.append(typ)
@@ -642,8 +642,7 @@ def check(self, schema, seen):
"discriminator '%s' is not a member of %s"
% (self._tag_name, base))
# Here we do:
- base_type = schema.lookup_type(self.tag_member.defined_in)
- assert base_type
+ base_type = schema.resolve_type(self.tag_member.defined_in)
if not base_type.is_implicit():
base = "base type '%s'" % self.tag_member.defined_in
if not isinstance(self.tag_member.type, QAPISchemaEnumType):
@@ -993,7 +992,7 @@ def lookup_type(self, name):
assert typ is None or isinstance(typ, QAPISchemaType)
return typ
- def resolve_type(self, name, info, what):
+ def resolve_type(self, name, info=None, what=None):
typ = self.lookup_type(name)
if not typ:
assert info and what # built-in types must not fail lookup
the function lookup_type() is capable of returning None, but some callers aren't prepared for that and assume it will always succeed. For static type analysis purposes, this creates problems at those callsites. Modify resolve_type() - which already cannot ever return None - to allow 'info' and 'what' parameters to be elided, which infers that the type lookup is a built-in type lookup. Change several callsites to use the new form of resolve_type to avoid the more laborious strictly-typed error-checking scaffolding: ret = lookup_type("foo") assert ret is not None typ: QAPISchemaType = ret which can be replaced with the simpler: typ = resolve_type("foo") Signed-off-by: John Snow <jsnow@redhat.com> --- scripts/qapi/introspect.py | 4 ++-- scripts/qapi/schema.py | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-)