Instead of using the info object for the doc block as a whole, update the info pointer for each call to ensure_untagged_section when the existing section is otherwise empty. This way, Sphinx error information will match precisely to where the text actually starts.
Signed-off-by: John Snow <js...@redhat.com> --- scripts/qapi/parser.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py index 8cdd5334ec6..41b9319e5cb 100644 --- a/scripts/qapi/parser.py +++ b/scripts/qapi/parser.py @@ -662,8 +662,13 @@ def end(self) -> None: def ensure_untagged_section(self, info: QAPISourceInfo) -> None: if self.all_sections and not self.all_sections[-1].tag: - # extend current section - self.all_sections[-1].text += '\n' + section = self.all_sections[-1] + # Section is empty so far; update info to start *here*. + if not section.text: + section.info = info + else: + # extend current section + self.all_sections[-1].text += '\n' return # start new section section = self.Section(info) -- 2.44.0