https://gcc.gnu.org/g:98b9ecc324aea049cefbb2a98f2d8b55f9bb7254

commit r16-1818-g98b9ecc324aea049cefbb2a98f2d8b55f9bb7254
Author: Ronan Desplanques <desplanq...@adacore.com>
Date:   Tue Apr 29 14:34:47 2025 +0200

    ada: Reuse Snames classification of reserved words
    
    Before this patch, Check_Future_Keyword had hardcoded lists of what
    reserved words were introduced in what versions of the Ada language
    specification. This patch makes it use the classification in Snames
    instead.
    
    gcc/ada/ChangeLog:
    
            * par-util.adb (Check_Future_Keyword): Use Snames subtypes. Extend
            comment.

Diff:
---
 gcc/ada/par-util.adb | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/gcc/ada/par-util.adb b/gcc/ada/par-util.adb
index 53b57e4c1bf3..78a76b3b1f14 100644
--- a/gcc/ada/par-util.adb
+++ b/gcc/ada/par-util.adb
@@ -176,14 +176,17 @@ package body Util is
    procedure Check_Future_Keyword is
    begin
       --  Ada 2005 (AI-284): Compiling in Ada 95 mode we warn that INTERFACE,
-      --  OVERRIDING, and SYNCHRONIZED are new reserved words.
+      --  OVERRIDING, and SYNCHRONIZED are new reserved words. We make an
+      --  exception if INTERFACE is used in the context of the GNAT-specific
+      --  pragma Interface, since we accept that pragma regardless of the Ada
+      --  version.
 
       if Ada_Version = Ada_95
         and then Warn_On_Ada_2005_Compatibility
       then
-         if Token_Name in Name_Overriding | Name_Synchronized
-           or else (Token_Name = Name_Interface
-                     and then Prev_Token /= Tok_Pragma)
+         if Token_Name in Ada_2005_Reserved_Words
+           and then not (Token_Name = Name_Interface
+                         and then Prev_Token = Tok_Pragma)
          then
             Error_Msg_N ("& is a reserved word in Ada 2005?y?", Token_Node);
          end if;
@@ -194,13 +197,13 @@ package body Util is
       if Ada_Version in Ada_95 .. Ada_2005
         and then Warn_On_Ada_2012_Compatibility
       then
-         if Token_Name = Name_Some then
+         if Token_Name in Ada_2012_Reserved_Words then
             Error_Msg_N ("& is a reserved word in Ada 2012?y?", Token_Node);
          end if;
       end if;
 
       if Ada_Version < Ada_With_All_Extensions then
-         if Token_Name = Name_Finally then
+         if Token_Name in GNAT_Extensions_Reserved_Words then
             Error_Msg_N
               ("& is a reserved word with all extensions enabled?",
                Token_Node);

Reply via email to