[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 08/17] qapi/expr.py: Add casts in a few select cases
From: |
John Snow |
Subject: |
[PATCH v5 08/17] qapi/expr.py: Add casts in a few select cases |
Date: |
Wed, 21 Apr 2021 14:20:23 -0400 |
Casts are instructions to the type checker only, they aren't "safe" and
should probably be avoided in general. In this case, when we perform
type checking on a nested structure, the type of each field does not
"stick".
(See PEP 647 for an example of "type narrowing" that does "stick".
It is available in Python 3.10, so we can't use it yet.)
We don't need to assert that something is a str if we've already checked
or asserted that it is -- use a cast instead for these cases.
Signed-off-by: John Snow <jsnow@redhat.com>
---
scripts/qapi/expr.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
index 03624bdf3f3..f3a4a8536e8 100644
--- a/scripts/qapi/expr.py
+++ b/scripts/qapi/expr.py
@@ -15,7 +15,7 @@
# See the COPYING file in the top-level directory.
import re
-from typing import Dict, Optional
+from typing import Dict, Optional, cast
from .common import c_name
from .error import QAPISemError
@@ -261,7 +261,7 @@ def check_enum(expr, info):
def check_struct(expr, info):
- name = expr['struct']
+ name = cast(str, expr['struct']) # Checked in check_exprs
members = expr['data']
check_type(members, info, "'data'", allow_dict=name)
@@ -269,7 +269,7 @@ def check_struct(expr, info):
def check_union(expr, info):
- name = expr['union']
+ name = cast(str, expr['union']) # Checked in check_exprs
base = expr.get('base')
discriminator = expr.get('discriminator')
members = expr['data']
@@ -368,8 +368,8 @@ def check_exprs(exprs):
else:
raise QAPISemError(info, "expression is missing metatype")
- name = expr[meta]
- check_name_is_str(name, info, "'%s'" % meta)
+ check_name_is_str(expr[meta], info, "'%s'" % meta)
+ name = cast(str, expr[meta])
info.set_defn(meta, name)
check_defn_name_str(name, info, meta)
--
2.30.2
- [PATCH v5 06/17] qapi/expr.py: move string check upwards in check_type, (continued)
- [PATCH v5 06/17] qapi/expr.py: move string check upwards in check_type, John Snow, 2021/04/21
- [PATCH v5 12/17] qapi/expr.py: Remove single-letter variable, John Snow, 2021/04/21
- [PATCH v5 10/17] qapi/expr.py: add type hint annotations, John Snow, 2021/04/21
- [PATCH v5 07/17] qapi/expr.py: Check type of union and alternate 'data' member, John Snow, 2021/04/21
- [PATCH v5 13/17] qapi/expr.py: enable pylint checks, John Snow, 2021/04/21
- [PATCH v5 09/17] qapi/expr.py: Modify check_keys to accept any Collection, John Snow, 2021/04/21
- [PATCH v5 04/17] qapi/expr.py: constrain incoming expression types, John Snow, 2021/04/21
- [PATCH v5 11/17] qapi/expr.py: Consolidate check_if_str calls in check_if, John Snow, 2021/04/21
- [PATCH v5 16/17] qapi/expr.py: Use tuples instead of lists for static data, John Snow, 2021/04/21
- [PATCH v5 02/17] qapi/expr.py: Remove 'info' argument from nested check_if_str, John Snow, 2021/04/21
- [PATCH v5 08/17] qapi/expr.py: Add casts in a few select cases,
John Snow <=
- [PATCH v5 15/17] qapi/expr.py: Add docstrings, John Snow, 2021/04/21
- [PATCH v5 17/17] qapi/expr: Update authorship and copyright information, John Snow, 2021/04/21
- [PATCH v5 14/17] qapi/expr: Only explicitly prohibit 'Kind' nor 'List' for type names, John Snow, 2021/04/21
- Re: [PATCH v5 00/17] qapi: static typing conversion, pt3, Markus Armbruster, 2021/04/22