qapi: Improve reporting of lexical errors

Show text up to next structural character, whitespace, or quote
character instead of just the first character.

Forgotten quotes now get reported like "Stray 'command'" instead of
"Stray 'c'".

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20190914153506.2151-9-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Markus Armbruster committed 2019-09-24 14:07:23 +02:00
1 parent 9f5e6b088a
commit 14c3279502
3 files changed
+7 -3

No files matched your search

+5 -1
View File
@@ -559,7 +559,11 @@ class QAPISchemaParser(object):
self.line += 1
self.line_pos = self.cursor
elif not self.tok.isspace():
raise QAPIParseError(self, "Stray '%s'" % self.tok)
# Show up to next structural, whitespace or quote
# character
match = re.match('[^[\\]{}:,\\s\'"]+',
self.src[self.cursor-1:])
raise QAPIParseError(self, "Stray '%s'" % match.group(0))
def get_members(self):
expr = OrderedDict()
+1 -1
View File
@@ -1 +1 @@
tests/qapi-schema/bad-type-int.json:3:13: Stray '1'
tests/qapi-schema/bad-type-int.json:3:13: Stray '123'
+1 -1
View File
@@ -1 +1 @@
tests/qapi-schema/funny-word.json:1:3: Stray 'c'
tests/qapi-schema/funny-word.json:1:3: Stray 'command'