From: Nikodemus S. <de...@us...> - 2010-10-06 08:59:41
|
Update of /cvsroot/sbcl/sbcl/tests In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv25951/tests Modified Files: compiler.pure.lisp Log Message: 1.0.43.26: propagate-local-call-args for lambdas with optional-dispatches too Previously we elided the propagation if the lambda had an entry-fun or an optional-dispatch. The comment notes that we "If the function has an XEP, then we don't do anything". There are, however, lambdas with optional-dispatche that don't have XEPs. Doing propagation for these is required for proper &REST list type derivation. Fixes lp#655203. Index: compiler.pure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/compiler.pure.lisp,v retrieving revision 1.235 retrieving revision 1.236 diff -u -d -r1.235 -r1.236 --- compiler.pure.lisp 4 Oct 2010 09:27:57 -0000 1.235 +++ compiler.pure.lisp 6 Oct 2010 08:59:32 -0000 1.236 @@ -2676,6 +2676,14 @@ (assert (eq 'list type)) (assert derivedp))) +(with-test (:name :rest-list-type-derivation2) + (multiple-value-bind (type derivedp) + (funcall (funcall (compile nil `(lambda () + (lambda (&rest args) + (ctu:compiler-derived-type args)))))) + (assert (eq 'list type)) + (assert derivedp))) + (with-test (:name :base-char-typep-elimination) (assert (eq (funcall (lambda (ch) (declare (type base-char ch) (optimize (speed 3) (safety 0))) |