THAW branch: The value #<SB-C::OPTIONAL-DISPATCH ...> is not of type SB-C::CLAMBDA when binding SB-C::NEW-FUN
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
This was found on SB's thaw branch, which he asked me to test. The failure occurred quickly in random testing (within 50K iterations).
(defun f313 (b c)
(flet ((%f (&key (k 0))
0)
==>
The value
#<SB-
:%SOURCE-NAME %G
:%DEBUG-NAME #1=(FLET %G :IN F313)
:TYPE #2=#<SB-
:WHERE-FROM :DEFINED
:ARGLIST (#<SB-C::LAMBDA-VAR :%SOURCE-NAME X {1005043DE3}>
:ALLOWP NIL
:KEYP NIL
:MIN-ARGS 2
:MAX-ARGS 3
:ENTRY-POINTS (#<SB-C::CLAMBDA
:MAIN-ENTRY #3# {1005044133}>
is not of type
SB-C::CLAMBDA
when binding SB-C::NEW-FUN
[Condition of type TYPE-ERROR]
Restarts:
0: [ABORT] Exit debugger, returning to top level.
Backtrace:
0: (SB-C::
1: (SB-C::
2: (SB-C::MERGE-LETS #<SB-C::CLAMBDA :%SOURCE-NAME SB-C::.ANONYMOUS. :%DEBUG-NAME (SB-C::
3: (SB-C::LET-CONVERT #<SB-C::CLAMBDA :%SOURCE-NAME SB-C::.ANONYMOUS. :%DEBUG-NAME (SB-C::
4: (SB-C::
5: ((FLET SB-C::FROB :IN SB-C::DELETE-
6: (SB-C::
[...]
Additional lambda forms that showed the bug (not hand reduced):
(LAMBDA (A B)
(SB-C:INSERT- STEP-CONDITIONS 0) (COMPILATION-SPEED 0)))
(LABELS ((%F4 (&OPTIONAL (F4-1 0) &KEY &ALLOW-OTHER-KEYS)
(FLET ((%F15 (F15-1 F15-2 F15-3)
( FLET ((%F15 (F15-1 F15-2 F15-3)
(PROGV
'( *S8* *S9*)
(LIST 0 0)
(FLET ((%F14
(F14-1 F14-2 F14-3
&OPTIONAL
(F14-4 F15-2)
(F14-5 0) (F14-6 B)
&KEY (KEY1 0) (KEY2 0))
F14- 3))
(% F14 0 0
( %F14 0 0 (%F14 0 0 0) 0) 0
0) ))))
(LET ((*S6* (%F15 0 0 *S6*)))
0))) )
( %F15 F4-1 0 B))))
B)))
(DECLARE (TYPE (INTEGER -2124124 105032712075782512) A))
(DECLARE (TYPE (INTEGER -635 190) B))
(DECLARE (IGNORABLE A B))
(DECLARE
(OPTIMIZE (DEBUG 2) (SPEED 0) (SAFETY 0) (SPACE 3)
(LET ((*S6* 0))
(LET ((*S2*
0)))
and
(LAMBDA (A B) STEP-CONDITIONS 0) (DEBUG 1) (SPACE 0) (SPEED 1)
(COMPILATION- SPEED 2) (SAFETY 3)))
(RETURN- FROM %F14
(RETURN- FROM %F14
(RETURN- FROM %F14
( PROGV
'(*S2* *S9* *S3*)
(LIST 0 A 0)
(LABELS ((%F6 (F6-1 &OPTIONAL (F6-2 F14-1))
F14- 2))
(%F6 0 (%F6 F14-1)))))))))
(DECLARE (TYPE (INTEGER -521801 534917) A))
(DECLARE (TYPE (INTEGER 4126244932124 6604041512606) B))
(DECLARE (IGNORABLE A B))
(DECLARE
(OPTIMIZE (SB-C:INSERT-
(FLET ((%F14 (F14-1 F14-2 F14-3 &KEY)
0))
(where the *...* variables are declaimed special.)