* Urk, missed a spot. There is probably little sense to open code ADJOIN
like ASSOC and MEMBER, so let's not.
* Tests.
`(%coerce-callable-to-fun ,fun))))
(let* ((cp (constant-lvar-p list))
(c-list (when cp (lvar-value list))))
- (cond ((and cp c-list (policy node (>= speed space)))
+ (cond ((and cp c-list (member name '(assoc member))
+ (policy node (>= speed space)))
`(let ,(mapcar (lambda (fun) `(,fun ,(ensure-fun fun))) funs)
,(open-code c-list)))
((and cp (not c-list))
(assert (equal '((:b))
(let ((sb-ext:*evaluator-mode* :interpret))
(eval '(adjoin (list 'b) (list '(:b)) :key #'car :test #'string=)))))
+
+;;; constant list argument to ADJOIN
+(assert (equal '(:x :y) (funcall
+ (compile nil '(lambda (elt)
+ (declare (optimize speed))
+ (adjoin elt '(:x :y))))
+ ':x)))
+(assert (equal '(:x :y) (funcall
+ (compile nil '(lambda (elt)
+ (declare (optimize speed))
+ (adjoin elt '(:y))))
+ ':x)))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.16.14"
+"1.0.16.15"