From nobody Thu Nov 14 07:04:42 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1705098668; cv=none; d=zohomail.com; s=zohoarc; b=jIp4++G/hNlfIa+Drn1ABRb8alAzQmcbfgNiCHsiz8xWjIC96kqlD5n7B+o5nnwXX7Y2pP0YoBYODL2ukPwUauBTqpqsaH4er4vQEdoSX+p3r+igS18oK1XtWXTOepSulOE7OEmFBnG5obgezV0TAbqAl2juGvt55VXFamT6lbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705098668; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iLrLTUxYwmlh9gHDsxNLoBUB9u/tn1T9SVTXL6mvKTg=; b=b9WFatbOtgoRi+vJue844WVx2sv1JhMFZOQe/D+RSKDKyItVeRP7t7pMy2fN2znbMXBZy7/eQuhZg/w2yWYP7tWsCqy7mAjc+JUkinZ2YOtzjXaP0zQTFleXjJXB6tMZT16fOYrjbwykqQDgvL9K88t7u+Kz4OBgQeN4vok7bn0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705098668855906.5599746071897; Fri, 12 Jan 2024 14:31:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rOQ2V-0005rU-NB; Fri, 12 Jan 2024 17:30:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOQ2H-0005n5-PM for qemu-devel@nongnu.org; Fri, 12 Jan 2024 17:29:57 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOQ2G-00061K-Av for qemu-devel@nongnu.org; Fri, 12 Jan 2024 17:29:57 -0500 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-505-oYYVWf7sOGOOyjdGbbTeFg-1; Fri, 12 Jan 2024 17:29:52 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E534B85A589; Fri, 12 Jan 2024 22:29:51 +0000 (UTC) Received: from scv.localdomain (unknown [10.22.17.171]) by smtp.corp.redhat.com (Postfix) with ESMTP id A0C2AC25AC8; Fri, 12 Jan 2024 22:29:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1705098595; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iLrLTUxYwmlh9gHDsxNLoBUB9u/tn1T9SVTXL6mvKTg=; b=Im06z8r0t/KS6uudeYDyxfo2LJeYtpFcQhHmoM51hXr+BIkKjW4Yz0B5sKTx/VsmVldURm 0G2bCzzwRbOCUeR/IPtI4JdSCOQoJIPZ2yZsgkF8RD9WAkefQkAbs1BrqsmIOm5c+mN7C6 u39cUSx1tvKC3Ov/5KHOyL9mhmOFz28= X-MC-Unique: oYYVWf7sOGOOyjdGbbTeFg-1 From: John Snow To: qemu-devel@nongnu.org Cc: Michael Roth , Peter Maydell , Markus Armbruster , 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 Message-ID: <20240112222945.3033854-16-jsnow@redhat.com> In-Reply-To: <20240112222945.3033854-1-jsnow@redhat.com> References: <20240112222945.3033854-1-jsnow@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.8 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-2.09, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1705098671025100009 Content-Type: text/plain; charset="utf-8" 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 --- 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)) =20 =20 --=20 2.43.0