diff --git a/CHANGES.rst b/CHANGES.rst index 6ab37736ff2..15bea277262 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -18,8 +18,9 @@ Deprecated Features added -------------- -* C: Added ``c.duplicate_declaration`` to the warning control options. - Patch by Julien Lecomte. +* Add a new ``duplicate_declaration`` warning type, + with ``duplicate_declaration.c`` and ``duplicate_declaration.cpp`` subtypes. + Patch by Julien Lecomte and Adam Turner. Bugs fixed ---------- diff --git a/doc/usage/configuration.rst b/doc/usage/configuration.rst index 903e1ea7d71..799897cfe14 100644 --- a/doc/usage/configuration.rst +++ b/doc/usage/configuration.rst @@ -1374,6 +1374,8 @@ Options for warning control * ``config.cache`` * ``docutils`` * ``download.not_readable`` + * ``duplicate_declaration.c`` + * ``duplicate_declaration.cpp`` * ``epub.unknown_project_files`` * ``epub.duplicated_toc_entry`` * ``i18n.inconsistent_references`` @@ -1404,7 +1406,6 @@ Options for warning control * ``autosectionlabel.`` * ``autosummary`` * ``autosummary.import_cycle`` - * ``c.duplicate_declaration`` * ``intersphinx.external`` You can choose from these types. You can also give only the first diff --git a/sphinx/domains/c/__init__.py b/sphinx/domains/c/__init__.py index 4e6704972ac..f58e2e607ff 100644 --- a/sphinx/domains/c/__init__.py +++ b/sphinx/domains/c/__init__.py @@ -284,8 +284,8 @@ def handle_signature(self, sig: str, signode: TextElement) -> ASTDeclaration: self.display_object_type, sig, location=signode, - type='c', - subtype='duplicate_declaration', + type='duplicate_declaration', + subtype='c', ) if ast.objectType == 'enumerator': diff --git a/sphinx/domains/c/_symbol.py b/sphinx/domains/c/_symbol.py index 629cabff4cf..d4662b07fc0 100644 --- a/sphinx/domains/c/_symbol.py +++ b/sphinx/domains/c/_symbol.py @@ -548,8 +548,8 @@ def merge_with( our_child.declaration.directiveType, name, location=(other_child.docname, other_child.line), - type='c', - subtype='duplicate_declaration', + type='duplicate_declaration', + subtype='c', ) else: # Both have declarations, and in the same docname. diff --git a/sphinx/domains/cpp/__init__.py b/sphinx/domains/cpp/__init__.py index 35d69de2fb0..7c84aac727a 100644 --- a/sphinx/domains/cpp/__init__.py +++ b/sphinx/domains/cpp/__init__.py @@ -397,6 +397,8 @@ def handle_signature(self, sig: str, signode: desc_signature) -> ASTDeclaration: self.display_object_type, sig, location=signode, + type='duplicate_declaration', + subtype='cpp', ) if ast.objectType == 'enumerator': diff --git a/sphinx/domains/cpp/_symbol.py b/sphinx/domains/cpp/_symbol.py index fa940e71a3f..cd5bb1707c7 100644 --- a/sphinx/domains/cpp/_symbol.py +++ b/sphinx/domains/cpp/_symbol.py @@ -895,6 +895,8 @@ def unconditional_add(self: Symbol, other_child: Symbol) -> None: our_child.declaration.directiveType, name, location=(other_child.docname, other_child.line), + type='duplicate_declaration', + subtype='cpp', ) else: our_object_type = our_child.declaration.objectType