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