From f2ba3dfc996bfcd67a723b23754e808276ab3b9f Mon Sep 17 00:00:00 2001
From: Kaz Kylheku <kaz@kylheku.com>
Date: Tue, 12 Oct 2021 00:42:16 -0700
Subject: 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.
---
 tests/012/compile.tl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'tests/012/compile.tl')

diff --git a/tests/012/compile.tl b/tests/012/compile.tl
index 58dcc275..d0c4913e 100644
--- a/tests/012/compile.tl
+++ b/tests/012/compile.tl
@@ -5,7 +5,7 @@
 
 (each ((f '#"aseq ashwin circ cont defset except \
              fini ifa man-or-boy oop-mi oop-seq oop \
-             parse quasi quine seq stslot const"))
+             parse syms quasi quine seq stslot const"))
   (let ((exf `@{%this-dir%}/@f.expected`))
     (when (path-exists-p exf)
       (file-append-string %expected-file%
-- 
cgit v1.2.3