https://gcc.gnu.org/g:a45219815d17b050abc25a6348bfe7c981399363

commit r15-5141-ga45219815d17b050abc25a6348bfe7c981399363
Author: Steve Baird <[email protected]>
Date:   Tue Oct 22 16:20:27 2024 -0700

    ada: Improve message for misused implicitly-defined preprocessor symbol.
    
    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.

Diff:
---
 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 b9502fc7782c..73fa8687afa7 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

Reply via email to