[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 07/16] qapi/expr.py: Add casts in a few select cases
From: |
John Snow |
Subject: |
[PATCH v3 07/16] qapi/expr.py: Add casts in a few select cases |
Date: |
Mon, 22 Feb 2021 19:33:59 -0500 |
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".
We don't need to assert that something is a str if we've already checked
that it is -- use a cast instead for these cases.
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
---
scripts/qapi/expr.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
index afa6bd07769..f45d6be1f4c 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 MutableMapping, Optional
+from typing import MutableMapping, Optional, cast
from .common import c_name
from .error import QAPISemError
@@ -232,7 +232,7 @@ def check_enum(expr, info):
def check_struct(expr, info):
- name = expr['struct']
+ name = cast(str, expr['struct']) # Asserted in check_exprs
members = expr['data']
check_type(members, info, "'data'", allow_dict=name)
@@ -240,7 +240,7 @@ def check_struct(expr, info):
def check_union(expr, info):
- name = expr['union']
+ name = cast(str, expr['union']) # Asserted in check_exprs
base = expr.get('base')
discriminator = expr.get('discriminator')
members = expr['data']
@@ -337,7 +337,7 @@ def check_exprs(exprs):
else:
raise QAPISemError(info, "expression is missing metatype")
- name = expr[meta]
+ name = cast(str, expr[meta]) # Asserted right below:
check_name_is_str(name, info, "'%s'" % meta)
info.set_defn(meta, name)
check_defn_name_str(name, info, meta)
--
2.29.2
- [PATCH v3 03/16] qapi/expr.py: constrain incoming expression types, (continued)
[PATCH v3 05/16] qapi/expr.py: move string check upwards in check_type, John Snow, 2021/02/22
[PATCH v3 06/16] qapi/expr.py: Check type of 'data' member, John Snow, 2021/02/22
[PATCH v3 07/16] qapi/expr.py: Add casts in a few select cases,
John Snow <=
[PATCH v3 09/16] qapi/expr.py: Consolidate check_if_str calls in check_if, John Snow, 2021/02/22
[PATCH v3 10/16] qapi/expr.py: Remove single-letter variable, John Snow, 2021/02/22