[fpc-devel] Case else allows multiple statements

Sven Barth pascaldragon at googlemail.com
Thu Sep 19 21:33:40 CEST 2019


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


More information about the fpc-devel mailing list