[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Register allocation with shadowed locals at same level
- From: Rob Kendrick <rjek@...>
- Date: Sat, 16 Jan 2010 00:31:50 +0000
On Fri, 15 Jan 2010 16:30:40 -0500
Nevin Flanagan <Alestane@comcast.net> wrote:
> I can't offer an explanation (except that my understanding is that
> the "local" keyword always brings its names into scope, shadowing all
> previous uses of that name), but this behavior should be avoidable
> with code like
>
> local foo, bar, err;
>
> foo, err = make_foo()
> if not foo then return nil, err end
>
> bar, err = make_err()
> if not bar then return nil, err end
Quite. This is precisely the type of code I'm trying to avoid.
> Another oddity of this particular processing gimmick is the ability
> to write lines like
>
> local _, _, _, _, test = someMultiReturnFunction()
>
> This actually creates four local variables named _, but only the last
> one will be accessible.
Indeed, and I think that the first three values of _ are lost and
leaked until the function exists. This could be a problem if the
values are large and the function never exits.
B.