qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 07/22] qapi/parser: assert object keys are strings


From: John Snow
Subject: Re: [PATCH 07/22] qapi/parser: assert object keys are strings
Date: Mon, 26 Apr 2021 13:46:27 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1

On 4/25/21 3:27 AM, Markus Armbruster wrote:
John Snow <jsnow@redhat.com> writes:

The single quote token implies the value is a string. Assert this to be
the case.

Signed-off-by: John Snow <jsnow@redhat.com>
---
  scripts/qapi/parser.py | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index 6b443b1247e..8d1fe0ddda5 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -246,6 +246,8 @@ def get_members(self):
              raise QAPIParseError(self, "expected string or '}'")
          while True:
              key = self.val
+            assert isinstance(key, str)  # Guaranteed by tok == "'"
+
              self.accept()
              if self.tok != ':':
                  raise QAPIParseError(self, "expected ':'")

The assertion is correct, but I wonder why mypy needs it.  Can you help?


The lexer value can also be True/False (Maybe None? I forget) based on the Token returned. Here, since the token was the single quote, we know that value must be a string.

Mypy has no insight into the correlation between the Token itself and the token value, because that relationship is not expressed via the type system.

--js




reply via email to

[Prev in Thread] Current Thread [Next in Thread]