summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docutils/docutils/transforms/references.py9
-rwxr-xr-xdocutils/test/test_transforms/test_substitutions.py2
2 files changed, 8 insertions, 3 deletions
diff --git a/docutils/docutils/transforms/references.py b/docutils/docutils/transforms/references.py
index 0642a634a..5e9ea9686 100644
--- a/docutils/docutils/transforms/references.py
+++ b/docutils/docutils/transforms/references.py
@@ -710,6 +710,7 @@ class Substitutions(Transform):
raise CircularSubstitutionDefinitionError
else:
nested[nested_name].append(key)
+ nested_ref['ref-origin'] = ref
subreflist.append(nested_ref)
except CircularSubstitutionDefinitionError:
parent = ref.parent
@@ -721,9 +722,13 @@ class Substitutions(Transform):
line=parent.line, base_node=parent)
parent.replace_self(msg)
else:
+ # find original ref substitution which cased this error
+ ref_origin = ref
+ while ref_origin.hasattr('ref-origin'):
+ ref_origin = ref_origin['ref-origin']
msg = self.document.reporter.error(
- 'Circular substitution definition referenced: "%s".'
- % refname, base_node=ref)
+ 'Circular substitution definition referenced: '
+ '"%s".' % refname, base_node=ref_origin)
msgid = self.document.set_id(msg)
prb = nodes.problematic(
ref.rawsource, ref.rawsource, refid=msgid)
diff --git a/docutils/test/test_transforms/test_substitutions.py b/docutils/test/test_transforms/test_substitutions.py
index c1a05d5a2..150c1d183 100755
--- a/docutils/test/test_transforms/test_substitutions.py
+++ b/docutils/test/test_transforms/test_substitutions.py
@@ -223,7 +223,7 @@ Use |sub| and |indirect1| and |sub| again (and |sub| one more time).
<system_message backrefs="id6" ids="id5" level="3" line="5" source="test data" type="ERROR">
<paragraph>
Circular substitution definition referenced: "sub".
- <system_message backrefs="id8" ids="id7" level="3" source="test data" type="ERROR">
+ <system_message backrefs="id8" ids="id7" level="3" line="5" source="test data" type="ERROR">
<paragraph>
Circular substitution definition referenced: "Sub".
"""],