Sphinx C domain code after 3.2.1 will start complaning if :c:struct
would be used for an union type:

        .../Documentation/gpu/drm-kms-helpers:352: ../drivers/video/hdmi.c:851: 
WARNING: C 'identifier' cross-reference uses wrong tag: reference name is 
'union hdmi_infoframe' but found name is 'struct hdmi_infoframe'. Full 
reference name is 'union hdmi_infoframe'. Full found name is 'struct 
hdmi_infoframe'.

So, let's address this issue too in advance, in order to
avoid future issues.

Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>
---
 scripts/kernel-doc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index c8f6b11d5da1..99cd8418ff8a 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -1092,7 +1092,11 @@ sub output_struct_rst(%) {
        print "\n\n.. c:type:: " . $name . "\n\n";
     } else {
        my $name = $args{'struct'};
-       print "\n\n.. c:struct:: " . $name . "\n\n";
+       if ($args{'type'} eq 'union') {
+           print "\n\n.. c:union:: " . $name . "\n\n";
+       } else {
+           print "\n\n.. c:struct:: " . $name . "\n\n";
+       }
     }
     print_lineno($declaration_start_line);
     $lineprefix = "   ";
-- 
2.26.2

Reply via email to