diff options
| -rw-r--r-- | docutils/docutils/transforms/references.py | 9 | ||||
| -rwxr-xr-x | docutils/test/test_transforms/test_substitutions.py | 2 |
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". """], |
