Ticket #803 (closed defect: fixed)
setters like set-cdr! don't invalidate type information
| Reported by: | sjamaan | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 4.9.0 |
| Component: | compiler | Version: | 4.7.x |
| Keywords: | scrutinizer, optimizations | Cc: |
Description
The following program, when compiled with specialization, prints {{#t}}. It prints #f in all other cases:
(let ((x (list 'a))) (set-cdr! x x) (print (list? x)))
If possible, set-car! and set-cdr! should have roughly the same effect as set! (and so should vector-set! but I couldn't reproduce a similar error with that, so I guess that's already taken care of, somehow)
I'll look into it in more detail but wanted to create a ticket so we don't forget about this.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.
