lua-users home
lua-l archive

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


2011/6/14 Dirk Laurie <dpl@sun.ac.za>:
> On Tue, Jun 14, 2011 at 03:05:24PM +0200, Jerome Vuarand wrote:
>> 2011/6/13 Roberto Ierusalimschy <roberto@inf.puc-rio.br>:
>> >> Why break can appear middle of block but not return?
>> >
>> > Because return may be followed by an optional expression. Something
>> > like 'return a       = 3' would confuse the parser.
>>
>> But then shouldn't "return; a = 3" be allowed ?
>>
> When?
>
> if test then return end; a=3        -- OK
> if test then return else a=3 end    -- OK
> if test then return; a=3 end        -- what's this supposed to mean?
> function x() print "gotcha!" return; a=3 end  -- never reaches a=3
>
> IMHO there is no situation in which "return; a = 3"
> can be milked into making sense.

It's just for consistency with:

if test then break; return a=3 end

which is allowed in 5.2, unless I misunderstood and then you can
ignore my question.