Fixed reference targets

This commit is contained in:
Armin Ronacher 2010-03-01 23:25:33 +01:00
parent 79e824d96a
commit c6a6cc5c5f

View File

@ -223,7 +223,7 @@ class WrappingDefExpr(DefExpr):
self.typename = typename self.typename = typename
def get_name(self): def get_name(self):
return self.typename return self.typename.get_name()
class ModifierDefExpr(WrappingDefExpr): class ModifierDefExpr(WrappingDefExpr):
@ -293,7 +293,7 @@ class ArgumentDefExpr(DefExpr):
self.default = default self.default = default
def get_name(self): def get_name(self):
return self.name return self.name.get_name()
def get_id(self): def get_id(self):
return self.type.get_id() return self.type.get_id()
@ -312,7 +312,7 @@ class NamedDefExpr(DefExpr):
self.static = static self.static = static
def get_name(self): def get_name(self):
return self.name return self.name.get_name()
def get_modifiers(self): def get_modifiers(self):
rv = [] rv = []
@ -763,6 +763,7 @@ class CPPObject(ObjectDescription):
pnode = addnodes.pending_xref( pnode = addnodes.pending_xref(
'', refdomain='cpp', reftype='type', '', refdomain='cpp', reftype='type',
reftarget=text, modname=None, classname=None) reftarget=text, modname=None, classname=None)
pnode['cpp:parent'] = self.env.temp_data.get('cpp:parent')
pnode += nodes.Text(text) pnode += nodes.Text(text)
node += pnode node += pnode
@ -1011,14 +1012,14 @@ class CPPDomain(Domain):
def resolve_xref(self, env, fromdocname, builder, def resolve_xref(self, env, fromdocname, builder,
typ, target, node, contnode): typ, target, node, contnode):
def _create_refnode(expr): def _create_refnode(expr):
target = unicode(expr) name = unicode(expr)
if target not in self.data['objects']: if name not in self.data['objects']:
return None return None
obj = self.data['objects'][target] obj = self.data['objects'][name]
if obj[1] != typ: if obj[1] != typ:
return None return None
return make_refnode(builder, fromdocname, obj[0], target, return make_refnode(builder, fromdocname, obj[0], expr.get_id(),
contnode, target) contnode, name)
parser = DefinitionParser(target) parser = DefinitionParser(target)
# XXX: warn? # XXX: warn?
@ -1030,7 +1031,7 @@ class CPPDomain(Domain):
except DefinitionError: except DefinitionError:
return None return None
parent = node.get('cpp:parent') parent = node['cpp:parent']
rv = _create_refnode(expr) rv = _create_refnode(expr)
if rv is not None or parent is None: if rv is not None or parent is None: