From: Steve Baird <ba...@adacore.com> 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. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/prep.adb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ada/prep.adb b/gcc/ada/prep.adb index b9502fc7782..73fa8687afa 100644 --- a/gcc/ada/prep.adb +++ b/gcc/ada/prep.adb @@ -489,7 +489,14 @@ package body Prep is 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 @@ -498,7 +505,7 @@ package body Prep is 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 -- 2.43.0