summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-08-14 16:51:04 +0200
committerGeorg Brandl <georg@python.org>2010-08-14 16:51:04 +0200
commit61ca36770abba35e326c564bb004105cbe2dbe4e (patch)
treedbc4ddf08b3e99790481774f6f50d53dd82b754a
parent9b6043c60857fd009e6b0c4210f9d400242b3289 (diff)
downloadsphinx-61ca36770abba35e326c564bb004105cbe2dbe4e.tar.gz
#490: Fix cross-references to objects of types added by the :func:`~.Sphinx.add_object_type` API function.
-rw-r--r--CHANGES3
-rw-r--r--sphinx/domains/std.py8
-rw-r--r--tests/test_build_html.py2
3 files changed, 11 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index da9a80d7..bd368e17 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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']", ''),