[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