diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-10-12 00:42:16 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-10-12 00:42:16 -0700 |
commit | f2ba3dfc996bfcd67a723b23754e808276ab3b9f (patch) | |
tree | 8f9e81e66511ec5fe8d54eb59e66b1add696c25f /txr.1 | |
parent | 2034e70be87fa1635b7e5a445450c1777c16d2ba (diff) | |
download | txr-f2ba3dfc996bfcd67a723b23754e808276ab3b9f.tar.gz txr-f2ba3dfc996bfcd67a723b23754e808276ab3b9f.tar.bz2 txr-f2ba3dfc996bfcd67a723b23754e808276ab3b9f.zip |
printer: bug: fallback syms printed without prefix.
This is a basic read/print consistency problem. When a symbol
is printed that is anywhere in the fallback list of the
current package, we are dumping it unqualified, even if
it is hidden by a same-named symbol in the current package
itself or such a symbol occurring earlier in the fallback
list.
* lib.c (symbol_needs_prefix): When the to-be-printed symbol
is found in the fallback list, re-scan the current package
for a symbol having the same name, as well as the preceding
nodes in the fallback list. If such a symbol is found, then
the to-be printed symbol must be package-qualified.
* tests/012/syms.expected: New file.
* tests/012/syms.tl: Likewise.
* tests/012/compile.tl: Pull syms into compile job.
* txr.1: Clarify text about this. The existing text's
only reasonable interpretation supports the behavior which
this patch ensures (which is needed on grounds of read/print
consistency) but the text lacks precision.
Diffstat (limited to 'txr.1')
-rw-r--r-- | txr.1 | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -61465,10 +61465,10 @@ recursion takes place. The printer situation involving the fallback list is as follows. If a symbol is being printed in a machine-readable way (not "pretty"), has a home package and is not a keyword symbol, then a search takes place -through the current package and its fallback list. If the symbol is found -in any of those places, and if those places are devoid of any symbols -which have the same name, thus causing ambiguity, then the symbol is printed -without a package prefix. +through the current package first and then its fallback list. If the symbol is +found anywhere in that sequence of locations, and is not occluded by a +same-named symbol occurring earlier in that sequence, then the symbol is +printed without a package prefix. The listener situation involving the fallback list is a follows. When tab completion is used on a symbol without a package |