docs: kdoc: clean up the create_parameter_list() "first arg" logic

The logic for finding the name of the first in a series of variable names
is somewhat convoluted and, in the use of .extend(), actively buggy.
Document what is happening and simplify the logic.

Acked-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Link: https://lore.kernel.org/r/20250814154035.328769-4-corbet@lwn.net
This commit is contained in:
Jonathan Corbet
2025-08-14 09:40:31 -06:00
parent f51b42b99e
commit 05d72fe072

View File

@@ -553,18 +553,18 @@ class KernelDoc:
arg = KernRe(r'\s*\[').sub('[', arg)
args = KernRe(r'\s*,\s*').split(arg)
args[0] = re.sub(r'(\*+)\s*', r' \1', args[0])
first_arg = []
r = KernRe(r'^(.*\s+)(.*?\[.*\].*)$')
if args[0] and r.match(args[0]):
args.pop(0)
first_arg.extend(r.group(1))
first_arg.append(r.group(2))
#
# args[0] has a string of "type a". If "a" includes an [array]
# declaration, we want to not be fooled by any white space inside
# the brackets, so detect and handle that case specially.
#
r = KernRe(r'^([^[\]]*\s+)(.*)$')
if r.match(args[0]):
args[0] = r.group(2)
dtype = r.group(1)
else:
first_arg = KernRe(r'\s+').split(args.pop(0))
args.insert(0, first_arg.pop())
dtype = ' '.join(first_arg)
# No space in args[0]; this seems wrong but preserves previous behavior
dtype = ''
bitfield_re = KernRe(r'(.*?):(\w+)')
for param in args: