#!+sb-package-locks
(let* ((symbol (etypecase name
(symbol name)
- (list (if (eq 'setf (first name))
+ (list (if (and (consp (cdr name))
+ (eq 'setf (first name)))
(second name)
- ;; Skip (class-predicate foo), etc.
+ ;; Skip lists of length 1, single conses and
+ ;; (class-predicate foo), etc.
;; FIXME: MOP and package-lock
;; interaction needs to be thought about.
(return-from
;; We just simple-stringify the name and call INTERN*, where the real
;; logic is.
(let ((name (if (simple-string-p name)
- name
- (coerce name 'simple-string)))
+ name
+ (coerce name 'simple-string)))
(package (find-undeleted-package-or-lose package)))
(declare (simple-string name))
(intern* name