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.

~Kirinn

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to