lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Tue, Jun 14, 2011 at 3:23 PM, Mike Pall <mikelu-1106@mike.de> wrote:
> Roberto Ierusalimschy wrote:
>> > >do
>> > > goto label
>> > > do
>> > >   @label: -- 1
>> > > end
>> > > @label: -- 2
>> > >end
>> > >@label: -- 0
>> > >
>> > >Now, when the compiler sees label 0, label 2 and label 1 are out of
>> > >scope, so it makes no sense to raise an error.
>> >     It would hurt the compiler to stop on label 2 (raising an error)
>> > to avoid confusion?
>>
>> I am talking about the conflict between label 2 and label 0; assume
>> label 1 is not present. How the compiler can stop on label 2?
>
> It doesn't need to. But it ought to error out when seeing label 0.
>
> Scoped labels do not correlate well with the mental model that
> most people have for goto. Nor is that a particularly useful
> feature. Labels should be unique per function.
>
> Implementation-wise you just keep all labels, but mark them as
> dead when the scope ends. You get better error messages, too.

I have to agree here, I know its tempting to treat labels like
lexically scoped variables, but I'm not sure that's generally useful
and I actually think it is rather confusing.

- Jim