From nobody Mon Nov 17 11:50:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1603749020; cv=none; d=zohomail.com; s=zohoarc; b=hgW8zE8Z/Votx1RCEtrRbgQBGyMbGw48SV/Tg82Gnhzl//E37/J0Fuxyxk0MtjQCY8fugW+VHqTGlc55X9BWkgQ45F4zaFkOUcyjdDcxJu+tHXe8Oc7Cz6sHlx81Ne/Bx3qQrp99Yg0EI9K+v0XTp7qHEsASFrwPsb8j9yllLRY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603749020; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=BzR1jpkyEvGckWPaDmHWHkzzpNd44v+7R6OfTtEDH+4=; b=SHVM2W1oIgKL5nxScud8N+xuuQZr3uYX3KFVfY9Kg6VrgXlWRZDLdRsEAAGcFVqBmSNzkctujH4hmZWoBzKGRFcdWVeQ4GVgAhSS4y34gmJWi6JBQuFkHBVfT6xIcs4dXH8JxOXKYtX6Ao2fcpO2rT6PkJHvhTSKT2YHqoiv+rw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603749020490739.0253264933858; Mon, 26 Oct 2020 14:50:20 -0700 (PDT) Received: from localhost ([::1]:37276 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kXANe-0002OP-Vv for importer@patchew.org; Mon, 26 Oct 2020 17:50:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60610) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kXAAo-00049P-3M for qemu-devel@nongnu.org; Mon, 26 Oct 2020 17:37:02 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:22833) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kXAAi-0001WY-MX for qemu-devel@nongnu.org; Mon, 26 Oct 2020 17:37:01 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-155-Tbxvh5SfNJ24Eyvs5WQ9zw-1; Mon, 26 Oct 2020 17:36:52 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F3745809DD5 for ; Mon, 26 Oct 2020 21:36:51 +0000 (UTC) Received: from scv.redhat.com (ovpn-118-238.rdu2.redhat.com [10.10.118.238]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5B90519728; Mon, 26 Oct 2020 21:36:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603748214; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BzR1jpkyEvGckWPaDmHWHkzzpNd44v+7R6OfTtEDH+4=; b=ai7vVRuYeWb67kw6uWumS827eIlfWTPuXo5olEEVmI0lFXPcLdg/5A7okIyVryIMRNfqSp Wxum5cFjkn90HhgXYTY3s9xvT7hGVK/byxDdEjMWOmaCYVOfFqBwNbaJQEaziFMkp9VtIs ZcG/E3dfJbZwDb8js0OUHWkFekyvlfk= X-MC-Unique: Tbxvh5SfNJ24Eyvs5WQ9zw-1 From: John Snow To: qemu-devel@nongnu.org, Markus Armbruster Subject: [PATCH v2 15/16] qapi/expr.py: move related checks inside check_xxx functions Date: Mon, 26 Oct 2020 17:36:36 -0400 Message-Id: <20201026213637.47087-16-jsnow@redhat.com> In-Reply-To: <20201026213637.47087-1-jsnow@redhat.com> References: <20201026213637.47087-1-jsnow@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jsnow@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable 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=216.205.24.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/26 02:39:09 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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_FILL_THIS_FORM_SHORT=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: John Snow , Eduardo Habkost , Cleber Rosa Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" There's not a big obvious difference between the types of checks that happen in the main function versus the kind that happen in the functions. Now they're in one place for each of the main types. As part of the move, spell out the required and optional keywords so they're obvious at a glance. Signed-off-by: John Snow Reviewed-by: Cleber Rosa --- scripts/qapi/expr.py | 55 ++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py index 9253560cd9ce..3b62e801a42c 100644 --- a/scripts/qapi/expr.py +++ b/scripts/qapi/expr.py @@ -347,6 +347,10 @@ def check_enum(expr: Expression, info: QAPISourceInfo)= -> None: :param expr: `Expression` to validate. :param info: QAPI source file information. """ + check_keys(expr, info, 'enum', + required=3D('enum', 'data'), + optional=3D('if', 'features', 'prefix')) + name =3D expr['enum'] members =3D expr['data'] prefix =3D expr.get('prefix') @@ -377,6 +381,11 @@ def check_struct(expr: Expression, info: QAPISourceInf= o) -> None: :param expr: `Expression` to validate. :param info: QAPI source file information. """ + check_keys(expr, info, 'struct', + required=3D('struct', 'data'), + optional=3D('base', 'if', 'features')) + normalize_members(expr['data']) + name =3D cast(str, expr['struct']) # Asserted in check_exprs members =3D expr['data'] =20 @@ -391,6 +400,13 @@ def check_union(expr: Expression, info: QAPISourceInfo= ) -> None: :param expr: `Expression` to validate. :param info: QAPI source file information. """ + check_keys(expr, info, 'union', + required=3D('union', 'data'), + optional=3D('base', 'discriminator', 'if', 'features')) + + normalize_members(expr.get('base')) + normalize_members(expr['data']) + name =3D cast(str, expr['union']) # Asserted in check_exprs base =3D expr.get('base') discriminator =3D expr.get('discriminator') @@ -423,6 +439,11 @@ def check_alternate(expr: Expression, info: QAPISource= Info) -> None: :param expr: Expression to validate. :param info: QAPI source file information. """ + check_keys(expr, info, 'alternate', + required=3D('alternate', 'data'), + optional=3D('if', 'features')) + normalize_members(expr['data']) + members =3D expr['data'] =20 if not members: @@ -446,6 +467,13 @@ def check_command(expr: Expression, info: QAPISourceIn= fo) -> None: :param expr: `Expression` to validate. :param info: QAPI source file information. """ + check_keys(expr, info, 'command', + required=3D['command'], + optional=3D('data', 'returns', 'boxed', 'if', 'features', + 'gen', 'success-response', 'allow-oob', + 'allow-preconfig', 'coroutine')) + normalize_members(expr.get('data')) + args =3D expr.get('data') rets =3D expr.get('returns') boxed =3D expr.get('boxed', False) @@ -467,6 +495,11 @@ def check_event(expr: Expression, info: QAPISourceInfo= ) -> None: :if: ``Optional[Ifcond]`` (see: `check_if`) :features: ``Optional[Features]`` (see: `check_features`) """ + check_keys(expr, info, 'event', + required=3D['event'], + optional=3D('data', 'boxed', 'if', 'features')) + normalize_members(expr.get('data')) + args =3D expr.get('data') boxed =3D expr.get('boxed', False) =20 @@ -534,38 +567,16 @@ def check_exprs(exprs: List[_JSObject]) -> List[_JSOb= ject]: "documentation comment required") =20 if meta =3D=3D 'enum': - check_keys(expr, info, meta, - ['enum', 'data'], ['if', 'features', 'prefix']) check_enum(expr, info) elif meta =3D=3D 'union': - check_keys(expr, info, meta, - ['union', 'data'], - ['base', 'discriminator', 'if', 'features']) - normalize_members(expr.get('base')) - normalize_members(expr['data']) check_union(expr, info) elif meta =3D=3D 'alternate': - check_keys(expr, info, meta, - ['alternate', 'data'], ['if', 'features']) - normalize_members(expr['data']) check_alternate(expr, info) elif meta =3D=3D 'struct': - check_keys(expr, info, meta, - ['struct', 'data'], ['base', 'if', 'features']) - normalize_members(expr['data']) check_struct(expr, info) elif meta =3D=3D 'command': - check_keys(expr, info, meta, - ['command'], - ['data', 'returns', 'boxed', 'if', 'features', - 'gen', 'success-response', 'allow-oob', - 'allow-preconfig', 'coroutine']) - normalize_members(expr.get('data')) check_command(expr, info) elif meta =3D=3D 'event': - check_keys(expr, info, meta, - ['event'], ['data', 'boxed', 'if', 'features']) - normalize_members(expr.get('data')) check_event(expr, info) else: assert False, 'unexpected meta type' --=20 2.26.2