[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