[fpc-devel] Case else allows multiple statements
Alexander Grotewohl
alex at dcclost.com
Thu Sep 19 21:40:18 CEST 2019
I'm assuming that's what the 'statementlist' means in the documentation
(rather than just 'statement')
On 9/19/2019 3:33 PM, Sven Barth via fpc-devel wrote:
> Am 19.09.2019 um 21:07 schrieb Kirinn:
>> I've stumbled on a situation where a case statement compiles when I
>> wouldn't expect it to. I would expect the below code to produce a
>> compile error:
>>
>> program test;
>>
>> var i : byte = 5;
>>
>> begin
>>
>> case i of
>>
>> 0..4: writeln('value is ', i);
>>
>> else writeln('Else!');
>>
>> i := 3;
>>
>> writeln(i);
>>
>> end;
>>
>> end.
>>
>> This compiles without errors or warnings on FPC 3.0.4 and produces
>> the output:
>>
>> Else!
>>
>> 3
>>
>> None of the documentation I've looked at suggests that a case-else is
>> implicitly a block. All examples in the documentation show only a
>> single statement in any else clause, or an explicit begin-end block.
>>
>> Is this expected behavior? If yes, the reference guide (13.2.2) would
>> benefit from mentioning this.
> That is indeed by design (at least Delphi compiles it as well). You
> can file a bug report against the documentation so that it isn't
> forgotten.
>
> Regards,
> Sven
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
More information about the fpc-devel
mailing list