[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