[PATCH 18/18] docs: kdoc_parser: move nested match transforms to xforms_lists.py

Mauro Carvalho Chehab
2026-03-02T16:41:12Z

As NestedMatch now has a sub method and a declaration close to
what KernRe does, we can move the rules to xforms_lists and
simplify kdoc_parser a little bit.

No functional changes.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
tools/lib/python/kdoc/kdoc_parser.py | 21 ---------------------
tools/lib/python/kdoc/xforms_lists.py | 14 +++++++++++++-
2 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/tools/lib/python/kdoc/kdoc_parser.py b/tools/lib/python/kdoc/kdoc_parser.py
index cd9857906a2b..edf70ba139a5 100644
--- a/tools/lib/python/kdoc/kdoc_parser.py
+++ b/tools/lib/python/kdoc/kdoc_parser.py
@@ -69,25 +69,6 @@ doc_begin_func = KernRe(str(doc_com) + # initial " * '
r'(?:[-:].*)?$', # description (not captured)
cache = False)

-#
-# Regexes here are guaranteed to have the end delimiter matching
-# the start delimiter. Yet, right now, only one replace group
-# is allowed.
-#
-struct_nested_prefixes = [
- (NestedMatch(r"__cond_acquires\s*\("), ""),
- (NestedMatch(r"__cond_releases\s*\("), ""),
- (NestedMatch(r"__acquires\s*\("), ""),
- (NestedMatch(r"__releases\s*\("), ""),
- (NestedMatch(r"__must_hold\s*\("), ""),
- (NestedMatch(r"__must_not_hold\s*\("), ""),
- (NestedMatch(r"__must_hold_shared\s*\("), ""),
- (NestedMatch(r"__cond_acquires_shared\s*\("), ""),
- (NestedMatch(r"__acquires_shared\s*\("), ""),
- (NestedMatch(r"__releases_shared\s*\("), ""),
- (NestedMatch(r'\bSTRUCT_GROUP\('), r'\0'),
-]
-
#
# Ancillary functions
#
@@ -761,8 +742,6 @@ class KernelDoc:
members = trim_private_members(members)
members = self.xforms.apply("struct", members)

- for search, sub in struct_nested_prefixes:
- members = search.sub(search, sub, members)
#
# Deal with embedded struct and union members, and drop enums entirely.
#
diff --git a/tools/lib/python/kdoc/xforms_lists.py b/tools/lib/python/kdoc/xforms_lists.py
index 1bda7c4634c3..c07cbe1e6349 100644
--- a/tools/lib/python/kdoc/xforms_lists.py
+++ b/tools/lib/python/kdoc/xforms_lists.py
@@ -4,7 +4,7 @@

import re

-from kdoc.kdoc_re import KernRe
+from kdoc.kdoc_re import KernRe, NestedMatch

struct_args_pattern = r'([^,)]+)'

@@ -94,6 +94,18 @@ class CTransforms:
(KernRe(r'DEFINE_DMA_UNMAP_ADDR\s*\(' + struct_args_pattern + r'\)', re.S), r'dma_addr_t \1'),
(KernRe(r'DEFINE_DMA_UNMAP_LEN\s*\(' + struct_args_pattern + r'\)', re.S), r'__u32 \1'),
(KernRe(r'VIRTIO_DECLARE_FEATURES\(([\w_]+)\)'), r'union { u64 \1; u64 \1_array[VIRTIO_FEATURES_U64S]; }'),
+
+ (NestedMatch(r"__cond_acquires\s*\("), ""),
+ (NestedMatch(r"__cond_releases\s*\("), ""),
+ (NestedMatch(r"__acquires\s*\("), ""),
+ (NestedMatch(r"__releases\s*\("), ""),
+ (NestedMatch(r"__must_hold\s*\("), ""),
+ (NestedMatch(r"__must_not_hold\s*\("), ""),
+ (NestedMatch(r"__must_hold_shared\s*\("), ""),
+ (NestedMatch(r"__cond_acquires_shared\s*\("), ""),
+ (NestedMatch(r"__acquires_shared\s*\("), ""),
+ (NestedMatch(r"__releases_shared\s*\("), ""),
+ (NestedMatch(r'\bSTRUCT_GROUP\('), r'\0'),
]

#: Transforms for function prototypes.
--
2.52.0