diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2017-05-04 20:10:03 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2017-05-04 20:10:03 +0000 |
| commit | fc7ea111abc4b8af98efd22bf8702274b083bdf4 (patch) | |
| tree | 58a37d102e7b8d4cfd1c5f5b3fd15a05baebdf4e /docutils | |
| parent | 4059d0eb68ba52a231571d64f433057c8c1d2592 (diff) | |
| download | docutils-fc7ea111abc4b8af98efd22bf8702274b083bdf4.tar.gz | |
unroll problematic refs to their origin in document when reporting errors
Patch by Kirill Smelkov. This is part of the (partially outdated) suite of
patches on https://sourceforge.net/p/docutils/patches/67/.
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8067 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils')
| -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". """], |
