Update of /cvsroot/sbcl/sbcl/tests
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv22647/tests
Modified Files:
compiler.pure.lisp
Log Message:
1.0.18.4: use CAREFUL-SPECIFIER-TYPE when deriving the type COERCE
* Derived type of the second argument can eg. be a MEMBER type with
where all members are not valid type specifiers: this is a runtime
error, not a compile-time one.
Index: compiler.pure.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/tests/compiler.pure.lisp,v
retrieving revision 1.178
retrieving revision 1.179
diff -u -d -r1.178 -r1.179
--- compiler.pure.lisp 30 Jun 2008 09:18:32 -0000 1.178
+++ compiler.pure.lisp 30 Jun 2008 09:44:42 -0000 1.179
@@ -2546,3 +2546,27 @@
(+ 81535869 (the (member 17549.955 #:g35917) p2))))
17549.955)
(+ 81535869 17549.955)))
+
+;;; misc.654
+(assert (eql 2
+ (let ((form '(lambda (p2)
+ (declare (optimize (speed 0) (safety 2) (debug 0) (space 2))
+ (type (member integer eql) p2))
+ (coerce 2 p2))))
+ (funcall (compile nil form) 'integer))))
+
+;;; misc.656
+(assert (eql 2
+ (let ((form '(lambda (p2)
+ (declare (optimize (speed 0) (safety 2) (debug 0) (space 2))
+ (type (member integer mod) p2))
+ (coerce 2 p2))))
+ (funcall (compile nil form) 'integer))))
+
+;;; misc.657
+(assert (eql 2
+ (let ((form '(lambda (p2)
+ (declare (optimize (speed 0) (safety 2) (debug 0) (space 2))
+ (type (member integer values) p2))
+ (coerce 2 p2))))
+ (funcall (compile nil form) 'integer))))
|