Re: [PATCH] Fix Unicode handling in :INVERT readtable and :CASE :COMMON pathnames

Vladimir Sedach <[email protected]> Mon, 04 May 2020 00:22:02 -0700
Newsgroups gmane.lisp.ecl.general
Message-ID <[email protected]>
The next problem is that printing of Unicode symbol names does not
work correctly. You can see this by trying:

(format nil "~A" (read-from-string "абракадабра"))

I do not understand enough about ECL's printing code yet to figure
out which part of the symbol printing code is doing the wrong thing,
and what the fix would be. I appreciate any help.

Attached are two test cases where this issue surfaces, that build on
the previous patches.

--
Vladimir Sedach
Software engineering services in Los Angeles https://oneofus.la
0001-tests-Added-tests-showing-error-in-printing-Unicode-.patch (text/x-diff, 1.6 KB)
From 63f4a568b63ae259f25f6b67643c1c958a5656f4 Mon Sep 17 00:00:00 2001
From: Vladimir Sedach <[email protected]>
Date: Sun, 3 May 2020 23:36:19 -0700
Subject: [PATCH] tests: Added tests showing error in printing Unicode symbol
 names

---
 src/tests/normal-tests/unicode.lsp | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/src/tests/normal-tests/unicode.lsp b/src/tests/normal-tests/unicode.lsp
index a3297679..6a4bc887 100644
--- a/src/tests/normal-tests/unicode.lsp
+++ b/src/tests/normal-tests/unicode.lsp
@@ -40,3 +40,30 @@
   (is (equal
        "ДАННЫЕ"
        (pathname-name (pathname "/tmp/данные.txt") :case :common))))
+
+;;; Date: 2020-05-03
+;;; From: Vladimir Sedach <[email protected]>
+;;; Fixed: 2020-05-03 (Vladimir Sedach)
+;;; Description:
+;;;
+;;;     Symbol names that contain Unicode are not printed correctly
+;;;
+(test unicode.0003.print-unicode-symbols
+  (is (string-equal
+       "АБРАКАДАБРА"
+       (format nil "~A" (read-from-string "абракадабра")))))
+
+;;; Date: 2020-05-03
+;;; From: Vladimir Sedach <[email protected]>
+;;; Fixed: 2020-05-03 (Vladimir Sedach)
+;;; Description:
+;;;
+;;;     unicode.0003.print-unicode-symbols shows up as a compiler
+;;;     error for symbol names that contain char codes between 128
+;;;     and 255, possibly others
+;;;
+(test unicode.0004.compile-unicode-symbols
+  (with-compiler ("unicode.0004.lsp" :load t)
+    "(defun unicode.0004 (x¹ y²)
+       (+ x¹ y²))")
+  (is (= 7 (unicode.0004 5 2))))
-- 
2.20.1