If the -u option is specified, then otherwise-undefined preprocessor
symbols are implicitly defined to be False. If such an implicitly-defined
symbol is then incorrectly used in a context that requires an integer value,
the resulting error message should not incorrectly state that the symbol is
undefined.
gcc/ada/ChangeLog:
* prep.adb (Expression): Improve error message text when an
implicitly-defined Boolean-valued symbol is used in a context that
requires an integer value.
if Symbol1 = No_Symbol then
Error_Msg_Name_1 := Symbol_Name1;
- Error_Msg ("unknown symbol %", Symbol_Pos1);
+ if Undefined_Symbols_Are_False then
+ Error_Msg
+ ("symbol % value is implicitly False"
+ & " and so not an integer",
+ Symbol_Pos1);
+ else
+ Error_Msg ("unknown symbol %", Symbol_Pos1);
+ end if;
Symbol_Value1 := No_String;
else
if Data.Is_A_String then
Error_Msg_Name_1 := Symbol_Name1;
Error_Msg
- ("symbol % value is not integer",
+ ("symbol % value is not an integer",
Symbol_Pos1);
else