Re: [fpc-devel] Case else allows multiple statements

2019-09-19 Thread Kirinn

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@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

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

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


Re: [fpc-devel] Case else allows multiple statements

2019-09-19 Thread Alexander Grotewohl
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@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

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


Re: [fpc-devel] Case else allows multiple statements

2019-09-19 Thread Sven Barth via fpc-devel

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@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel