Telling.
I took the trouble to look up the case statement in a random selection
of about 30 instruction manuals, books and magazines about Pascal from
my personal library (only a few pretend to be ISO compliant or mention
the standard, though. These beasts are rare) and some compilers.
I can not find 1! implementation that tries to do what FPC trunk
currently does.
I am really passionate about this. The quote below seems to suggest that
the behavior in 3.0.4 was acceptable after all.
That said: the suggestion by Gareth to issue a warning at compile time
and a run-time error when an ordinal is used that has no case label
seems to be much closer to what the 7185:1990 standard actually
describes.
According to what I found there is no smoking gun: I could not find any
implementation or reference from any reputable source that implements
the case statement in the way that is implemented in trunk: compile time
error when not all of the ordinal range for the case are processed. It
simply does not exist as far as I am concerned, unless someone can
convince be by a reputable source that such implementation exists
elsewhere.
I strongly object against the current implementation and I believe it to
rely on false premises.
Thaddy
On 2019-07-30 01:43, J. Gareth Moreton wrote:
As someone on the issue pointed out... on page 2, section 3.1:
3.1 Error
A violation by a program of the requirements of this International
Standard that a processor is permitted to leave undetected.
NOTES
1. If it is possible to construct a program in which the violation or
non-violation of this International Standard requires knowledge of the
data read by the program or the implementation definition of
implementation-defined features, then violation of that requirement is
classified as an error. Processors may report on such violations of
the requirement without such knowledge, but there always remain some
cases that require execution, simulated execution, or proof procedures
with the required knowledge. Requirements that can be verified without
such knowledge are not classified as errors.
2. Processors should attempt the detection of as many errors as
possible, and to as complete a degree as possible. Permission to omit
detection is provided for implementations in which the detection would
be an excessive burden.
----
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel