Fix referencing in rst domain.

This commit is contained in:
Georg Brandl 2010-05-30 17:33:27 +02:00
parent 295805f625
commit 87c0b98f0a

View File

@ -35,14 +35,15 @@ class ReSTMarkup(ObjectDescription):
self.state.document.note_explicit_target(signode) self.state.document.note_explicit_target(signode)
objects = self.env.domaindata['rst']['objects'] objects = self.env.domaindata['rst']['objects']
if (self.objtype, name) in objects: key = (self.objtype, name)
if key in objects:
self.env.warn(self.env.docname, self.env.warn(self.env.docname,
'duplicate description of %s %s, ' % 'duplicate description of %s %s, ' %
(self.objtype, name) + (self.objtype, name) +
'other instance in ' + 'other instance in ' +
self.env.doc2path(objects[name][0]), self.env.doc2path(objects[key]),
self.lineno) self.lineno)
objects[self.objtype, name] = self.env.docname objects[key] = self.env.docname
indextext = self.get_index_text(self.objtype, name) indextext = self.get_index_text(self.objtype, name)
if indextext: if indextext:
self.indexnode['entries'].append(('single', indextext, self.indexnode['entries'].append(('single', indextext,
@ -123,10 +124,11 @@ class ReSTDomain(Domain):
def resolve_xref(self, env, fromdocname, builder, typ, target, node, def resolve_xref(self, env, fromdocname, builder, typ, target, node,
contnode): contnode):
objects = self.data['objects'] objects = self.data['objects']
objtypes = self.objtypes_for_role(typ)
if not (typ, target) in objects: for objtype in objtypes:
return None if (objtype, target) in objects:
return make_refnode(builder, fromdocname, objects[typ, target], return make_refnode(builder, fromdocname,
objects[objtype, target],
target, contnode, target) target, contnode, target)
def get_objects(self): def get_objects(self):