Regarding things to be documented in Delphi: As was established last year, this aspect of FPCs type system is intended to be a bit more strict than that of the Hejlsberg languages (*), so I'm not taking anything for granted any more. (Case in point, while I see it: the very different role of range checks on subranges. The "Percentile" example a bit down from your link is completely invalid in FPCs type system, but valid *and* failing rangechecks ever since TP5).
(*) Referring to TP, Delphi, and C# - which all share the same characteristics. Am 13.04.2018 um 21:21 schrieb Ondrej Pokorny: > Why? I don't think so. Enums with assigned values are documented to be valid > in > the whole range Low..High: > > http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Simple_Types_(Delphi)#Enumerated_Types_with_Explicitly_Assigned_Ordinality Most obvious issue: do for loops iterate over the holes in enums? But I wasn't just referring to enums with assigned values. Even simple enums are not as simple, as soon as they formally don't fall back on their host type. type enu = (aa, bb, cc, dd); var v: enu; begin v:= dd; // doesn't matter how dd ends up in v v:= succ(v); // always invalid, no need for {$R+}! end. All this is not quite as easy to get right as it seems on the surface. But I do like the the "v is TEnum" operator from the other side of this thread, regardless of where this goes... -- Regards, Martok Ceterum censeo b32079 esse sanandam. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel