[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 03/11] qapi script: remember line number in schema pa
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PULL 03/11] qapi script: remember line number in schema parsing |
Date: |
Tue, 11 Mar 2014 09:41:03 -0400 |
From: Wenchao Xia <address@hidden>
Before this patch, 'QAPISchemaError' scans whole input until 'pos'
to get error line number. After this patch, the scan is avoided since
line number is remembered in schema parsing. This patch also benefits
other error report functions, which would be introduced later.
Signed-off-by: Wenchao Xia <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>
---
scripts/qapi.py | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/scripts/qapi.py b/scripts/qapi.py
index d0e7934..1954292 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -39,12 +39,10 @@ class QAPISchemaError(Exception):
def __init__(self, schema, msg):
self.fp = schema.fp
self.msg = msg
- self.line = self.col = 1
- for ch in schema.src[0:schema.pos]:
- if ch == '\n':
- self.line += 1
- self.col = 1
- elif ch == '\t':
+ self.col = 1
+ self.line = schema.line
+ for ch in schema.src[schema.line_pos:schema.pos]:
+ if ch == '\t':
self.col = (self.col + 7) % 8 + 1
else:
self.col += 1
@@ -60,6 +58,8 @@ class QAPISchema:
if self.src == '' or self.src[-1] != '\n':
self.src += '\n'
self.cursor = 0
+ self.line = 1
+ self.line_pos = 0
self.exprs = []
self.accept()
@@ -100,6 +100,8 @@ class QAPISchema:
if self.cursor == len(self.src):
self.tok = None
return
+ self.line += 1
+ self.line_pos = self.cursor
elif not self.tok.isspace():
raise QAPISchemaError(self, 'Stray "%s"' % self.tok)
--
1.8.1.4
- [Qemu-devel] [PULL for-2.0 00/11] QMP queue, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 06/11] qapi script: use same function to generate enum string, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 05/11] qapi script: code move for generate_enum_name(), Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 01/11] qapi script: remember explicitly defined enum values, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 02/11] qapi script: add check for duplicated key, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 03/11] qapi script: remember line number in schema parsing,
Luiz Capitulino <=
- [Qemu-devel] [PULL 08/11] qapi: convert BlockdevOptions to use enum discriminator, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 10/11] qapi script: do not add "_" for every capitalized char in enum, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 11/11] tests: test-qmp-commands: Fix double free, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 07/11] qapi script: support enum type as discriminator in union, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 04/11] qapi script: check correctness of union, Luiz Capitulino, 2014/03/11
- [Qemu-devel] [PULL 09/11] qapi script: do not allow string discriminator, Luiz Capitulino, 2014/03/11
- Re: [Qemu-devel] [PULL for-2.0 00/11] QMP queue, Peter Maydell, 2014/03/12