aboutsummaryrefslogtreecommitdiff
path: root/scripts/qapi/parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/qapi/parser.py')
-rw-r--r--scripts/qapi/parser.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py
index 7b49d3ab05..ddc14ceaba 100644
--- a/scripts/qapi/parser.py
+++ b/scripts/qapi/parser.py
@@ -483,7 +483,9 @@ class QAPIDoc:
# Blank lines are always OK.
if line:
indent = must_match(r'\s*', line).end()
- if indent < self._indent:
+ if self._indent < 0:
+ self._indent = indent
+ elif indent < self._indent:
raise QAPIParseError(
self._parser,
"unexpected de-indent (expected at least %d spaces)" %
@@ -631,9 +633,9 @@ class QAPIDoc:
indent = must_match(r'@\S*:\s*', line).end()
line = line[indent:]
if not line:
- # Line was just the "@arg:" header; following lines
- # are not indented
- indent = 0
+ # Line was just the "@arg:" header
+ # The next non-blank line determines expected indent
+ indent = -1
else:
line = ' ' * indent + line
self._start_args_section(name[1:-1], indent)
@@ -666,9 +668,9 @@ class QAPIDoc:
indent = must_match(r'@\S*:\s*', line).end()
line = line[indent:]
if not line:
- # Line was just the "@arg:" header; following lines
- # are not indented
- indent = 0
+ # Line was just the "@arg:" header
+ # The next non-blank line determines expected indent
+ indent = -1
else:
line = ' ' * indent + line
self._start_features_section(name[1:-1], indent)
@@ -712,8 +714,8 @@ class QAPIDoc:
indent = must_match(r'\S*:\s*', line).end()
line = line[indent:]
if not line:
- # Line was just the "Section:" header; following lines
- # are not indented
+ # Line was just the "Section:" header
+ # The next non-blank line determines expected indent
indent = 0
else:
line = ' ' * indent + line