DEFGENERIC should issue a WARNING when an unknown declaration identifier is used within its DECLARE option
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Low
|
Unassigned |
Bug Description
What I do and what happens:
(defgeneric foo ()
(declare (fake-declarati
=> #<COMMON-
What I expected to happen:
A warning getting thrown.
Analysis:
From CLHS DEFGENERIC:
"If an implementation notices a declaration specifier that it does not support and that has not been proclaimed as a non-standard declaration identifier name in a declaration proclamation, it should issue a warning."
A warning is already appropriately signaled in similar situations:
(declaim (fake-declaration))
--| WARNING: unrecognized declaration (FAKE-DECLARATION)
(lambda ()
(declare (fake-declarati
; in: LAMBDA ()
; (PHASED-
;
; caught WARNING:
; unrecognized declaration (FAKE-DECLARATION)
;
; compilation unit finished
; caught 1 WARNING condition
SBCL version: 1.0.51
uname -a: Linux dynamorph 2.6.32-35-generic #78-Ubuntu SMP Tue Oct 11 15:27:15 UTC 2011 i686 GNU/Linux
*features*:
(:SWANK :QUICKLISP :SB-BSD-
:COMMON-LISP :SBCL :SB-DOC :SB-TEST :SB-LDB :SB-PACKAGE-LOCKS :SB-UNICODE
:SB-EVAL :SB-SOURCE-
:SB-THREAD :LARGEFILE :GENCGC :STACK-
:C-STACK-
:RAW-INSTANCE-
:STACK-
:CYCLE-COUNTER :INLINE-CONSTANTS :MEMORY-
:LINKAGE-TABLE :OS-PROVIDES-DLOPEN :OS-PROVIDES-DLADDR :OS-PROVIDES-PUTWC
:OS-PROVIDES-
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
Fixed in my pending tree.