remobjects / pascalscript

pascalscript
Other
447 stars 178 forks source link

incorrect implementation of case statements #258

Open Jens-G opened 2 years ago

Jens-G commented 2 years ago
var nr : Integer;
begin
  case nr of
    1 :  {statement};
    2 :  {statement};
  else
    {statement};
    {statement};
    ...
    {statement};
  end;
end;

PascalScript impl seems to assume that the else branch is also a single statement, which is wrong. The else branch of a switch actually forms already a code block: It can hold an arbitrary number of statements without the need of an extra begin/end pair.

It may look inconsistent but it actually is that way back to TurboPascal and earlier.

https://www.gnu-pascal.de/gpc/case.html

Found in InnoScript, if that is of any relevance.