OSDN Git Service

* style.adb:
authorbosch <bosch@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2001 00:54:36 +0000 (00:54 +0000)
committerbosch <bosch@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 31 Oct 2001 00:54:36 +0000 (00:54 +0000)
(Check_Identifier): Rewrite circuit to be compatible with use of letters
in the upper half of ASCII.
(Check_Identifier): Minor reformatting

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46667 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/style.adb

index d088d1e..61a2635 100644 (file)
@@ -1,3 +1,10 @@
+2001-10-30  Robert Dewar <dewar@gnat.com>
+
+       * style.adb:
+       (Check_Identifier): Rewrite circuit to be compatible with use of letters
+       in the upper half of ASCII.
+       (Check_Identifier): Minor reformatting
+
 2001-10-30  Geert Bosch <bosch@gnat.com>
 
        * (Associated_Node, Set_Associated_Node): Do not check for 
index 638333c..9b74d61 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---                            $Revision: 1.48 $
+--                            $Revision$
 --                                                                          --
 --          Copyright (C) 1992-2001 Free Software Foundation, Inc.          --
 --                                                                          --
@@ -409,10 +409,10 @@ package body Style is
      (Ref : Node_Or_Entity_Id;
       Def : Node_Or_Entity_Id)
    is
-      SRef : Source_Ptr := Sloc (Ref);
-      SDef : Source_Ptr := Sloc (Def);
-      TRef : Source_Buffer_Ptr;
-      TDef : Source_Buffer_Ptr;
+      Sref : Source_Ptr := Sloc (Ref);
+      Sdef : Source_Ptr := Sloc (Def);
+      Tref : Source_Buffer_Ptr;
+      Tdef : Source_Buffer_Ptr;
       Nlen : Nat;
       Cas  : Casing_Type;
 
@@ -429,45 +429,66 @@ package body Style is
          --  Check same casing if we are checking references
 
          if Style_Check_References then
-            TRef := Source_Text (Get_Source_File_Index (SRef));
-            TDef := Source_Text (Get_Source_File_Index (SDef));
+            Tref := Source_Text (Get_Source_File_Index (Sref));
+            Tdef := Source_Text (Get_Source_File_Index (Sdef));
 
             --  Ignore operator name case completely. This also catches the
             --  case of where one is an operator and the other is not. This
             --  is a phenomenon from rewriting of operators as functions,
             --  and is to be ignored.
 
-            if TRef (SRef) = '"' or else TDef (SDef) = '"' then
+            if Tref (Sref) = '"' or else Tdef (Sdef) = '"' then
                return;
 
             else
-               for J in 1 .. Length_Of_Name (Chars (Ref)) loop
-                  if TRef (SRef) /= TDef (SDef) then
-                     Error_Msg_Node_1 := Def;
-                     Error_Msg_Sloc := Sloc (Def);
-                     Error_Msg
-                       ("(style) bad casing of & declared#", SRef);
+               while Tref (Sref) = Tdef (Sdef) loop
+
+                  --  If end of identifier, all done
+
+                  if not Identifier_Char (Tref (Sref)) then
                      return;
-                  end if;
 
-                  SRef := SRef + 1;
-                  SDef := SDef + 1;
+                  --  Otherwise loop continues
+
+                  else
+                     Sref := Sref + 1;
+                     Sdef := Sdef + 1;
+                  end if;
                end loop;
+
+               --  Fall through loop when mismatch between identifiers
+               --  If either identifier is not terminated, error.
+
+               if Identifier_Char (Tref (Sref))
+                    or else
+                  Identifier_Char (Tdef (Sdef))
+               then
+                  Error_Msg_Node_1 := Def;
+                  Error_Msg_Sloc := Sloc (Def);
+                  Error_Msg
+                    ("(style) bad casing of & declared#", Sref);
+                  return;
+
+               --  Else end of identifiers, and they match
+
+               else
+                  return;
+               end if;
             end if;
          end if;
 
       --  Case of definition in package Standard
 
-      elsif SDef = Standard_Location then
+      elsif Sdef = Standard_Location then
 
          --  Check case of identifiers in Standard
 
          if Style_Check_Standard then
-            TRef := Source_Text (Get_Source_File_Index (SRef));
+            Tref := Source_Text (Get_Source_File_Index (Sref));
 
             --  Ignore operators
 
-            if TRef (SRef) = '"' then
+            if Tref (Sref) = '"' then
                null;
 
             --  Special case of ASCII
@@ -491,7 +512,7 @@ package body Style is
                Nlen  := Length_Of_Name (Chars (Ref));
 
                if Determine_Casing
-                    (TRef (SRef .. SRef + Source_Ptr (Nlen) - 1)) = Cas
+                    (Tref (Sref .. Sref + Source_Ptr (Nlen) - 1)) = Cas
                then
                   null;
                else