From 826301dbb115b8ad3b48a9f513cc3bca36cbf9ac Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 3 Dec 2018 23:45:18 +0900 Subject: [PATCH] Fix annotations for cpp domain --- sphinx/domains/__init__.py | 2 +- sphinx/domains/cpp.py | 27 ++++++++++++--------------- sphinx/util/docfields.py | 2 +- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/sphinx/domains/__init__.py b/sphinx/domains/__init__.py index 81b3e635e..0b7f9c2cb 100644 --- a/sphinx/domains/__init__.py +++ b/sphinx/domains/__init__.py @@ -276,7 +276,7 @@ class Domain: pass def process_field_xref(self, pnode): - # type: (nodes.Node) -> None + # type: (addnodes.pending_xref) -> None """Process a pending xref created in a doc field. For example, attach information about the current scope. """ diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py index 93708e216..abb209d79 100644 --- a/sphinx/domains/cpp.py +++ b/sphinx/domains/cpp.py @@ -2230,7 +2230,7 @@ class ASTNestedName(ASTBase): # 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 # type: nodes.Element + dest = signode if mode == 'lastIsName': dest = addnodes.desc_addname() for i in range(len(names)): @@ -6809,7 +6809,7 @@ class CPPDomain(Domain): pass def process_field_xref(self, pnode): - # type: (nodes.Node) -> None + # type: (addnodes.pending_xref) -> None pnode.attributes.update(self.env.ref_context) def merge_domaindata(self, docnames, otherdata): @@ -6835,8 +6835,7 @@ class CPPDomain(Domain): def _resolve_xref_inner(self, env, fromdocname, builder, typ, target, node, contnode, emitWarnings=True): - # type: (BuildEnvironment, unicode, Builder, unicode, unicode, addnodes.pending_xref, nodes.Element, bool) -> nodes.Element # NOQA - + # type: (BuildEnvironment, unicode, Builder, unicode, unicode, addnodes.pending_xref, nodes.Element, bool) -> Tuple[nodes.Element, unicode] # NOQA class Warner: def warn(self, msg): if emitWarnings: @@ -6973,23 +6972,21 @@ class CPPDomain(Domain): declaration.get_newest_id(), contnode, displayName ), declaration.objectType - def resolve_xref(self, env, fromdocname, builder, - typ, target, node, contnode): + def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode): # type: (BuildEnvironment, unicode, Builder, unicode, unicode, addnodes.pending_xref, nodes.Element) -> nodes.Element # NOQA return self._resolve_xref_inner(env, fromdocname, builder, typ, target, node, contnode)[0] - def resolve_any_xref(self, env, fromdocname, builder, target, - node, contnode): - # type: (BuildEnvironment, unicode, Builder, unicode, nodes.pending_xref, nodes.Node) -> List[Tuple[unicode, nodes.Element]] # NOQA - node, objtype = self._resolve_xref_inner(env, fromdocname, builder, - 'any', target, node, contnode, - emitWarnings=False) - if node: + def resolve_any_xref(self, env, fromdocname, builder, target, node, contnode): + # type: (BuildEnvironment, unicode, Builder, unicode, addnodes.pending_xref, nodes.Element) -> List[Tuple[unicode, nodes.Element]] # NOQA + retnode, objtype = self._resolve_xref_inner(env, fromdocname, builder, + 'any', target, node, contnode, + emitWarnings=False) + if retnode: if objtype == 'templateParam': - return [('cpp:templateParam', node)] + return [('cpp:templateParam', retnode)] else: - return [('cpp:' + self.role_for_objtype(objtype), node)] + return [('cpp:' + self.role_for_objtype(objtype), retnode)] return [] def get_objects(self): diff --git a/sphinx/util/docfields.py b/sphinx/util/docfields.py index 36ad222fc..61d88055b 100644 --- a/sphinx/util/docfields.py +++ b/sphinx/util/docfields.py @@ -80,7 +80,7 @@ class Field: reftype=rolename, reftarget=target) refnode += contnode or innernode(target, target) if env: - env.domains[domain].process_field_xref(refnode) + env.get_domain(domain).process_field_xref(refnode) return refnode def make_xrefs(self,