The kerneldoc parsing phase gathers all of the information about the declarations of interest, then passes it through to the output phase as a dict that is an unstructured blob of information; this organization has its origins in the Perl version of the program. It results in an interface that is difficult to reason about, dozen-parameter function calls, and other ills. Introduce a new class (KdocItem) to carry this information between the parser and the output modules, and, step by step, modify the system to use this class in a more structured way. This could be taken further by creating a subclass of KdocItem for each declaration type (function, struct, ...), but that is probably more structure than we need. The result is (I hope) clearer code, the removal of a bunch of boilerplate, and no changes to the generated output. Changes since v1: - Coding-style tweaks requested by Mauro - Drop the reworking of output-text accumulation for now - Add a warning for prehistoric Python versions Jonathan Corbet (12): docs: kdoc; Add a rudimentary class to represent output items docs: kdoc: simplify the output-item passing docs: kdoc: drop "sectionlist" docs: kdoc: Centralize handling of the item section list docs: kdoc: remove the "struct_actual" machinery docs: kdoc: use self.entry.parameterlist directly in check_sections() docs: kdoc: Coalesce parameter-list handling docs: kdoc: Regularize the use of the declaration name docs: kdoc: straighten up dump_declaration() docs: kdoc: directly access the always-there KdocItem fields docs: kdoc: clean up check_sections() docs: kdoc: emit a warning for ancient versions of Python scripts/lib/kdoc/kdoc_files.py | 4 +- scripts/lib/kdoc/kdoc_item.py | 41 ++++++++ scripts/lib/kdoc/kdoc_output.py | 172 ++++++++++++-------------------- scripts/lib/kdoc/kdoc_parser.py | 171 +++++++------------------------ 4 files changed, 144 insertions(+), 244 deletions(-) create mode 100644 scripts/lib/kdoc/kdoc_item.py -- 2.49.0