(in-package "SB!KERNEL")
-(file-comment
- "$Header$")
-
;;; We save space in macro definitions by calling this function.
(defun do-arg-count-error (error-kind name arg lambda-list minimum maximum)
- (multiple-value-bind (fname sb!debug:*stack-top-hint*) (find-caller-name)
+ (multiple-value-bind (fname sb!debug:*stack-top-hint*)
+ (find-caller-name-and-frame)
(error 'defmacro-ll-arg-count-error
:kind error-kind
- :function-name fname
:name name
:argument arg
:lambda-list lambda-list
:initform nil)))
(defun print-defmacro-ll-bind-error-intro (condition stream)
- (if (null (defmacro-lambda-list-bind-error-name condition))
- (format stream
- "error while parsing arguments to ~A in ~S:~%"
- (defmacro-lambda-list-bind-error-kind condition)
- (condition-function-name condition))
- (format stream
- "error while parsing arguments to ~A ~S:~%"
- (defmacro-lambda-list-bind-error-kind condition)
- (defmacro-lambda-list-bind-error-name condition))))
+ (format stream
+ "error while parsing arguments to ~A~@[ ~S~]:~%"
+ (defmacro-lambda-list-bind-error-kind condition)
+ (defmacro-lambda-list-bind-error-name condition)))
(define-condition defmacro-bogus-sublist-error
(defmacro-lambda-list-bind-error)
(:report (lambda (condition stream)
(print-defmacro-ll-bind-error-intro condition stream)
(format stream
+ ;; FIXME: These should probably just be three
+ ;; subclasses of the base class, so that we don't
+ ;; need to maintain the set of tags both here and
+ ;; implicitly wherever this macro is used.
(ecase
(defmacro-ll-broken-key-list-error-problem condition)
(:dotted-list
"dotted keyword/value list: ~S")
(:odd-length
"odd number of elements in keyword/value list: ~S")
- (:duplicate
- "duplicate keyword: ~S")
(:unknown-keyword
"~{unknown keyword: ~S; expected one of ~{~S~^, ~}~}"))
(defmacro-ll-broken-key-list-error-info condition)))))