[fpc-devel] [Patch/RFC] Warnings for (in/over)complete case statements
Jonas Maebe
jonas at freepascal.org
Sun May 12 16:36:39 CEST 2019
On 01/01/2019 22:10, Martok wrote:
> The attached patch adds two messages inspired by C compiler's -Wswitch-enum and
> -Wcovered-switch-default. Building on the recent label count refactoring, this
> was fairly straightforward.
>
> - If a case statement on an ordinal does not contain labels for all values of
> the ordinal, and no else statement is given, raise a new warning (W6059). This
> is actually defined as an error in ISO7185 and a dynamic-violation in IEC10206.
>
> - If a case statement has labels for the entire range of the type, and an (now
> never used) else statement is present, a warning "Unreachable code" is raised.
Thanks. I have added these warnings to the compiler in r42047, and also
the static/dynamic errors for Standard resp. Extended ISO Pascal.
By default, the warnings are enabled for
* enums
* boolean
* integer subrange types that don't span the entire range of their
storage (e.g. 0..254, -128..0, ..., but not shortint/byte/smallint/word/...)
The warning can be enabled for all ordinal types with the new -CC
command line option. Like any other warning, it can be disabled with the
corresponding -vm option (-vm6060 in this case).
Jonas
More information about the fpc-devel
mailing list