On 12.05.2019 16:36, Jonas Maebe wrote:
Thanks. I have added these warnings to the compiler in r42047, and also the static/dynamic errors for Standard resp. Extended ISO Pascal.

Very nice.

One question about "C-style enumeration types" https://www.freepascal.org/docs-html/ref/refse12.html#QQ2-26-31

Do the holes between undefined enum values belong to the enumeration or not? Because:

1.) The FPC documentation states they do not. See https://www.freepascal.org/docs-html/ref/refse12.html#QQ2-26-31 /"The Pred and Succ functions cannot be used on this kind of enumeration types. Trying to do this anyhow will result in a compiler error."/

2.) The Delphi documentation states they do. See http://docwiki.embarcadero.com/RADStudio/Rio/en/Simple_Types_(Delphi)#Enumerated_Types_with_Explicitly_Assigned_Ordinality /"An enumerated type is, in effect, a subrange whose lowest and highest values correspond to the lowest and highest ordinalities of the constants in the declaration."/

3.) Your newly added warnings indicate they do. Because a warning is emitted if all well-defined values are used in the case statement:

program Project1;
{$mode objfpc}
type
  TMyEnum = (one = 2, two = 5);
var
  A: TMyEnum;
begin
  A := TMyEnum(3);
  case A of // compiler warning: Case statement does not handle all possible cases
    one: Exit;
    two: Exit;
  end;
  Writeln(A); // run-time error 107 - so maybe not a possible case after all?
  ReadLn;
end.

---

This dissimilarities should get resolved.

Ondrej

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

Reply via email to