(defmacro define-parse-method (name lambda-list &body body)
"Define a type parser on NAME and lists whose CAR is NAME."
(discard-docstring body)
- (unless (member (package-name *package*) '(#:cffi #:cffi-sys #:cffi-tests)
- :key #'string)
- (warn-if-kw-or-belongs-to-cl name))
+ (warn-if-kw-or-belongs-to-cl name)
`(eval-when (:compile-toplevel :load-toplevel :execute)
(setf (find-type-parser ',name)
(lambda ,lambda-list ,@body))
;;; packages. CFFI itself gets to use keywords without a warning.
(defun warn-if-kw-or-belongs-to-cl (name)
(let ((package (symbol-package name)))
- (when (or (eq package (find-package '#:cl))
- (and (not (eq *package* (find-package '#:cffi)))
- (eq package (find-package '#:keyword))))
+ (when (and (not (eq *package* (find-package '#:cffi)))
+ (member package '(#:common-lisp #:keyword)
+ :key #'find-package))
(warn "Defining a foreign type named ~S. This symbol belongs to the ~A ~
package and that may interfere with other code using CFFI."
name (package-name package)))))