diff options
| -rw-r--r-- | CHANGES | 3 | ||||
| -rw-r--r-- | sphinx/domains/std.py | 8 | ||||
| -rw-r--r-- | tests/test_build_html.py | 2 |
3 files changed, 11 insertions, 2 deletions
@@ -1,6 +1,9 @@ Release 1.0.2 (Aug 05, 2010) ============================ +* #490: Fix cross-references to objects of types added by the + :func:`~.Sphinx.add_object_type` API function. + * Allow breaking long signatures, continuing with backlash-escaped newlines. diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py index 63a3bf6d..6194ace9 100644 --- a/sphinx/domains/std.py +++ b/sphinx/domains/std.py @@ -484,7 +484,13 @@ class StandardDomain(Domain): return make_refnode(builder, fromdocname, docname, labelid, contnode) else: - docname, labelid = self.data['objects'].get((typ, target), ('', '')) + objtypes = self.objtypes_for_role(typ) or [] + for objtype in objtypes: + if (objtype, target) in self.data['objects']: + docname, labelid = self.data['objects'][objtype, target] + break + else: + docname, labelid = '', '' if not docname: if typ == 'term': env.warn(node.get('refdoc', fromdocname), diff --git a/tests/test_build_html.py b/tests/test_build_html.py index 6857d330..912a0b42 100644 --- a/tests/test_build_html.py +++ b/tests/test_build_html.py @@ -166,7 +166,7 @@ HTML_XPATH = { (".//a[@href='#mod.Cls'][@class='reference internal']", ''), (".//dl[@class='userdesc']", ''), (".//dt[@id='userdesc-myobj']", ''), - (".//a[@href='#userdesc-myobj']", ''), + (".//a[@href='#userdesc-myobj'][@class='reference internal']", ''), # C references (".//span[@class='pre']", 'CFunction()'), (".//a[@href='#Sphinx_DoSomething']", ''), |
