The 'seen' dictionaries are invariant types and require the most abstracted type to maintain a consistent interface with other check_clash implementations.
In this case, we happen to know (and require) that they will be object types, so add a runtime assertion to constrain that type. Corrects this warning: qapi/schema.py:718: error: Item "QAPISchemaType" of "Optional[QAPISchemaType]" has no attribute "check_clash" Signed-off-by: John Snow <js...@redhat.com> --- scripts/qapi/schema.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py index 09c7ceab41..b502eee9cb 100644 --- a/scripts/qapi/schema.py +++ b/scripts/qapi/schema.py @@ -620,6 +620,7 @@ 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 + assert isinstance(v.type, QAPISchemaObjectType) v.type.check_clash(info, dict(seen)) -- 2.26.2