X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fmacros.lisp;h=838d6999cdf757c3c8ddda1d4d7df2a165904d9e;hb=9abfd1a2b22862570c15ffa5129b1196d0480290;hp=bd9714bc21ea83717b70cfa7194ad45f1cbef272;hpb=599a126c55a6f28e0b5b8a931cb1628c2ee106a7;p=sbcl.git diff --git a/src/code/macros.lisp b/src/code/macros.lisp index bd9714b..838d699 100644 --- a/src/code/macros.lisp +++ b/src/code/macros.lisp @@ -63,6 +63,12 @@ is not of the specified type. If an error is signalled and the restart is used to return, this can only return if the STORE-VALUE restart is invoked. In that case it will store into PLACE and start over." + ;; Detect a common user-error. + (when (and (consp type) (eq 'quote (car type))) + (error 'simple-reference-error + :format-control "Quoted type specifier in ~S: ~S" + :format-arguments (list 'check-type type) + :references (list '(:ansi-cl :macro check-type)))) ;; KLUDGE: We use a simpler form of expansion if PLACE is just a ;; variable to work around Python's blind spot in type derivation. ;; For more complex places getting the type derived should not @@ -176,7 +182,7 @@ invoked. In that case it will store into PLACE and start over." (case-kind :initarg :case-kind :reader case-warning-case-kind) (occurrences :initarg :occurrences - :type (cons (integer 0) (cons t null)) + :type list :reader duplicate-case-key-warning-occurrences)) (:report (lambda (condition stream) @@ -216,7 +222,7 @@ invoked. In that case it will store into PLACE and start over." do (when existing (let ((sb!c::*current-path* (when (boundp 'sb!c::*source-paths*) - (or (gethash case sb!c::*source-paths*) + (or (sb!c::get-source-path case) sb!c::*current-path*)))) (warn 'duplicate-case-key-warning :key k