master: Resolve an editing mistake in the char-code type deriver

stassats via Sbcl-commits <[email protected]> Sat, 23 May 2026 23:38:16 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  9bebe3a3950961de344b03c21cd527ab93accb44 (commit)
      from  828b918e052cbdf7d039c328beffa880cca0d8f0 (commit)

- Log -----------------------------------------------------------------
commit 9bebe3a3950961de344b03c21cd527ab93accb44
Author: Stas Boukarev <[email protected]>
Date:   Sun May 24 02:21:48 2026 +0300

    Resolve an editing mistake in the char-code type deriver
    
    Fixes lp#2154086
---
 src/compiler/srctran.lisp | 25 ++++++-------------------
 1 file changed, 6 insertions(+), 19 deletions(-)

diff --git a/src/compiler/srctran.lisp b/src/compiler/srctran.lisp
index fceec29fa..2ed12172a 100644
--- a/src/compiler/srctran.lisp
+++ b/src/compiler/srctran.lisp
@@ -3254,25 +3254,12 @@
        (make-numeric-type 'integer lo-res hi-res)))))
 
 (defoptimizer (char-code derive-type) ((char))
-  (let ((type (type-intersection (lvar-type char) (specifier-type 'character))))
-    (cond ((member-type-p type)
-           (specifier-type
-            `(member
-              ,@(loop for member in (member-type-members type)
-                      when (characterp member)
-                      collect (char-code member)))))
-          ((sb-kernel::character-set-type-p type)
-           (specifier-type
-            `(or
-              ,@(loop for (low . high)
-                      in (character-set-type-pairs type)
-                      collect `(integer ,low ,high)))))
-          ((csubtypep type (specifier-type 'base-char))
-           (specifier-type
-            (make-numeric-type 'mod base-char-code-limit)))
-          (t
-           (specifier-type
-            (make-numeric-type 'mod char-code-limit))))))
+  (let ((type (lvar-type char)))
+    (when (sb-kernel::character-set-type-p type)
+      (specifier-type
+       `(or
+         ,@(loop for (low . high) in (character-set-type-pairs type)
+                 collect `(integer ,low ,high)))))))
 
 (defoptimizer (code-char derive-type) ((code))
   (one-arg-derive-type code

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL