mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
C++, properly use desc_addname in declarations.
This meant that the prefix was not rendered in code font, and it broke Breathe. Fixes michaeljones/breathe#374 Example: .. cpp:class:: A .. cpp:member:: A::b ``A::`` not rendered properly.
This commit is contained in:
parent
ba4b9c0131
commit
4cf1b48947
1
CHANGES
1
CHANGES
@ -25,6 +25,7 @@ Bugs fixed
|
|||||||
* #4962: C++, raised TypeError on duplicate declaration.
|
* #4962: C++, raised TypeError on duplicate declaration.
|
||||||
* #4825: C++, properly parse expr roles and give better error messages when
|
* #4825: C++, properly parse expr roles and give better error messages when
|
||||||
(escaped) line breaks are present.
|
(escaped) line breaks are present.
|
||||||
|
* C++, properly use ``desc_addname`` nodes for prefixes of names.
|
||||||
* #4915, #4916: links on search page are broken when using dirhtml builder
|
* #4915, #4916: links on search page are broken when using dirhtml builder
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
|
@ -1965,26 +1965,34 @@ class ASTNestedName(ASTBase):
|
|||||||
prefix = '' # type: unicode
|
prefix = '' # type: unicode
|
||||||
first = True
|
first = True
|
||||||
names = self.names[:-1] if mode == 'lastIsName' else self.names
|
names = self.names[:-1] if mode == 'lastIsName' else self.names
|
||||||
|
# If lastIsName, then wrap all of the prefix in a desc_addname,
|
||||||
|
# else append directly to signode.
|
||||||
|
# NOTE: Breathe relies on the prefix being in the desc_addname node,
|
||||||
|
# so it can remove it in inner declarations.
|
||||||
|
dest = signode
|
||||||
|
if mode == 'lastIsName':
|
||||||
|
dest = addnodes.desc_addname()
|
||||||
for i in range(len(names)):
|
for i in range(len(names)):
|
||||||
name = names[i]
|
name = names[i]
|
||||||
template = self.templates[i]
|
template = self.templates[i]
|
||||||
if not first:
|
if not first:
|
||||||
signode += nodes.Text('::')
|
dest += nodes.Text('::')
|
||||||
prefix += '::'
|
prefix += '::'
|
||||||
if template:
|
if template:
|
||||||
signode += nodes.Text("template ")
|
dest += nodes.Text("template ")
|
||||||
first = False
|
first = False
|
||||||
if name != '':
|
if name != '':
|
||||||
if (name.templateArgs and # type: ignore
|
if (name.templateArgs and # type: ignore
|
||||||
iTemplateParams < len(templateParams)):
|
iTemplateParams < len(templateParams)):
|
||||||
templateParamsPrefix += text_type(templateParams[iTemplateParams])
|
templateParamsPrefix += text_type(templateParams[iTemplateParams])
|
||||||
iTemplateParams += 1
|
iTemplateParams += 1
|
||||||
name.describe_signature(signode, 'markType', # type: ignore
|
name.describe_signature(dest, 'markType', # type: ignore
|
||||||
env, templateParamsPrefix + prefix, symbol)
|
env, templateParamsPrefix + prefix, symbol)
|
||||||
prefix += text_type(name)
|
prefix += text_type(name)
|
||||||
if mode == 'lastIsName':
|
if mode == 'lastIsName':
|
||||||
if len(self.names) > 1:
|
if len(self.names) > 1:
|
||||||
signode += addnodes.desc_addname('::', '::')
|
dest += addnodes.desc_addname('::', '::')
|
||||||
|
signode += dest
|
||||||
if self.templates[-1]:
|
if self.templates[-1]:
|
||||||
signode += nodes.Text("template ")
|
signode += nodes.Text("template ")
|
||||||
self.names[-1].describe_signature(signode, mode, env, '', symbol)
|
self.names[-1].describe_signature(signode, mode, env, '', symbol)
|
||||||
|
Loading…
Reference in New Issue
Block a user