[fpc-devel] Case else allows multiple statements
Kirinn
kirinn at mooncore.eu
Thu Sep 19 22:06:58 CEST 2019
Thanks, I've added a minor doc bug for it.
https://bugs.freepascal.org/view.php?id=36090
On 9/19/19 8:40 PM, Alexander Grotewohl wrote:
> 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
> _______________________________________________
> 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