[slime-devel] Patch: suppress duplicated frame variables (Allegro)
Willem Broekema
metawilm at gmail.com
Tue Jun 10 23:07:04 UTC 2008
On Tue, Jun 10, 2008 at 11:53 PM, Willem Broekema <metawilm at gmail.com> wrote:
> On Tue, Jun 10, 2008 at 11:04 PM, Bradford W Miller
>> (defun f (x y)
>> (let ((y x)
>> (x y))
>> ...))
I should make clear that the frame variable duplication happens
without the programmer introducing a new variable. The reason for this
patch is that it is a bit annoying to see an extra line that has no
extra information:
(defun f (x y)
(declare (optimize debug))
(zut (bar x) y))
Compiling and calling (f 1 2) results of course in:
Error: attempt to call `bar' which is an undefined function.
and zooming to the corresponding frame for of the f call gives:
[1] cl-user(37): :loc
Compiled lexical environment:
0(required): x: 1
1(required): y: 2
2(local): y: 2
which slime displays the frame as:
4: (f 1 2)
Locals:
x = 1
y = 2
y = 2
while it would make more sense to see:
4: (f 1 2)
Locals:
x = 1
y = 2
But there is the opposite case: a user introducing a variable binding
that has identical name and value as a parameter (or an outer
binding). This patch could remove a duplicated line that the user
expected to see twice.
However, it seems very unlikely to me that that poses any problem: the
compiler could optimize away a local variable; there is no guaranteed
order in which the variables are listed. Meanwhile the unintended
duplicates are a more frequent annoyance.
(Perhaps a better way to handle this, would be to include the
"required" / "local" labels in the listing of the local variables?)
- Willem
More information about the slime-devel
mailing list