Commit c3597ab2 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Jonathan Corbet
Browse files

scripts/kernel-doc.py: fix line number output



With the Pyhton version, the actual output happens after parsing,
from records stored at self.entries.

Ensure that line numbers will be properly stored there and
that they'll produce the desired results at the ReST output.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/5182a531d14b5fe9e1fc5da5f9dae05d66852a60.1744106242.git.mchehab+huawei@kernel.org
parent 0873e554
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -255,7 +255,8 @@ class RestFormat(OutputFormat):
    def print_lineno(self, ln):
        """Outputs a line number"""

        if self.enable_lineno and ln:
        if self.enable_lineno and ln is not None:
            ln += 1
            self.data += f".. LINENO {ln}\n"

    def output_highlight(self, args):
@@ -358,7 +359,7 @@ class RestFormat(OutputFormat):
        parameterdescs = args.get('parameterdescs', {})
        parameterdesc_start_lines = args.get('parameterdesc_start_lines', {})

        ln = args.get('ln', 0)
        ln = args.get('declaration_start_line', 0)

        count = 0
        for parameter in parameterlist:
@@ -375,11 +376,11 @@ class RestFormat(OutputFormat):
        if not func_macro:
            signature += ")"

        self.print_lineno(ln)
        if args.get('typedef') or not args.get('functiontype'):
            self.data += f".. c:macro:: {args['function']}\n\n"

            if args.get('typedef'):
                self.print_lineno(ln)
                self.data += "   **Typedef**: "
                self.lineprefix = ""
                self.output_highlight(args.get('purpose', ""))
@@ -434,7 +435,7 @@ class RestFormat(OutputFormat):
        name = args.get('enum', '')
        parameterlist = args.get('parameterlist', [])
        parameterdescs = args.get('parameterdescs', {})
        ln = args.get('ln', 0)
        ln = args.get('declaration_start_line', 0)

        self.data += f"\n\n.. c:enum:: {name}\n\n"

@@ -464,7 +465,7 @@ class RestFormat(OutputFormat):

        oldprefix = self.lineprefix
        name = args.get('typedef', '')
        ln = args.get('ln', 0)
        ln = args.get('declaration_start_line', 0)

        self.data += f"\n\n.. c:type:: {name}\n\n"

@@ -484,7 +485,7 @@ class RestFormat(OutputFormat):
        purpose = args.get('purpose', "")
        declaration = args.get('definition', "")
        dtype = args.get('type', "struct")
        ln = args.get('ln', 0)
        ln = args.get('declaration_start_line', 0)

        parameterlist = args.get('parameterlist', [])
        parameterdescs = args.get('parameterdescs', {})
+17 −4
Original line number Diff line number Diff line
@@ -276,7 +276,7 @@ class KernelDoc:
        self.entry.brcount = 0

        self.entry.in_doc_sect = False
        self.entry.declaration_start_line = ln
        self.entry.declaration_start_line = ln + 1

    def push_parameter(self, ln, decl_type, param, dtype,
                       org_arg, declaration_name):
@@ -806,8 +806,10 @@ class KernelDoc:
                                parameterlist=self.entry.parameterlist,
                                parameterdescs=self.entry.parameterdescs,
                                parametertypes=self.entry.parametertypes,
                                parameterdesc_start_lines=self.entry.parameterdesc_start_lines,
                                sectionlist=self.entry.sectionlist,
                                sections=self.entry.sections,
                                section_start_lines=self.entry.section_start_lines,
                                purpose=self.entry.declaration_purpose)

    def dump_enum(self, ln, proto):
@@ -882,8 +884,10 @@ class KernelDoc:
                                module=self.config.modulename,
                                parameterlist=self.entry.parameterlist,
                                parameterdescs=self.entry.parameterdescs,
                                parameterdesc_start_lines=self.entry.parameterdesc_start_lines,
                                sectionlist=self.entry.sectionlist,
                                sections=self.entry.sections,
                                section_start_lines=self.entry.section_start_lines,
                                purpose=self.entry.declaration_purpose)

    def dump_declaration(self, ln, prototype):
@@ -1054,8 +1058,10 @@ class KernelDoc:
                                    parameterlist=self.entry.parameterlist,
                                    parameterdescs=self.entry.parameterdescs,
                                    parametertypes=self.entry.parametertypes,
                                    parameterdesc_start_lines=self.entry.parameterdesc_start_lines,
                                    sectionlist=self.entry.sectionlist,
                                    sections=self.entry.sections,
                                    section_start_lines=self.entry.section_start_lines,
                                    purpose=self.entry.declaration_purpose,
                                    func_macro=func_macro)
        else:
@@ -1067,8 +1073,10 @@ class KernelDoc:
                                    parameterlist=self.entry.parameterlist,
                                    parameterdescs=self.entry.parameterdescs,
                                    parametertypes=self.entry.parametertypes,
                                    parameterdesc_start_lines=self.entry.parameterdesc_start_lines,
                                    sectionlist=self.entry.sectionlist,
                                    sections=self.entry.sections,
                                    section_start_lines=self.entry.section_start_lines,
                                    purpose=self.entry.declaration_purpose,
                                    func_macro=func_macro)

@@ -1112,8 +1120,10 @@ class KernelDoc:
                                    parameterlist=self.entry.parameterlist,
                                    parameterdescs=self.entry.parameterdescs,
                                    parametertypes=self.entry.parametertypes,
                                    parameterdesc_start_lines=self.entry.parameterdesc_start_lines,
                                    sectionlist=self.entry.sectionlist,
                                    sections=self.entry.sections,
                                    section_start_lines=self.entry.section_start_lines,
                                    purpose=self.entry.declaration_purpose)
            return

@@ -1136,6 +1146,7 @@ class KernelDoc:
                                    module=self.entry.modulename,
                                    sectionlist=self.entry.sectionlist,
                                    sections=self.entry.sections,
                                    section_start_lines=self.entry.section_start_lines,
                                    purpose=self.entry.declaration_purpose)
            return

@@ -1168,7 +1179,7 @@ class KernelDoc:
            return

        # start a new entry
        self.reset_state(ln + 1)
        self.reset_state(ln)
        self.entry.in_doc_sect = False

        # next line is always the function name
@@ -1281,7 +1292,7 @@ class KernelDoc:
            if r.match(line):
                self.dump_section()
                self.entry.section = self.section_default
                self.entry.new_start_line = line
                self.entry.new_start_line = ln
                self.entry.contents = ""

        if doc_sect.search(line):
@@ -1619,7 +1630,9 @@ class KernelDoc:
            self.dump_section()
            self.output_declaration("doc", None,
                                    sectionlist=self.entry.sectionlist,
                                    sections=self.entry.sections, module=self.config.modulename)
                                    sections=self.entry.sections,
                                    section_start_lines=self.entry.section_start_lines,
                                    module=self.config.modulename)
            self.reset_state(ln)

        elif doc_content.search(line):