diff options
author | Ghjuvan Lacambre <lacambre@adacore.com> | 2020-08-20 17:17:39 +0200 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-10-22 08:11:25 -0400 |
commit | e354dca60268ea14f3b20fb865b23e27af751022 (patch) | |
tree | 27f5f04f556ef4a796e96cc978711f4a3ebf0a64 /gcc/ada | |
parent | d302be6eba3f7c09ca01496fd2172c6aeb8967b3 (diff) | |
download | gcc-e354dca60268ea14f3b20fb865b23e27af751022.zip gcc-e354dca60268ea14f3b20fb865b23e27af751022.tar.gz gcc-e354dca60268ea14f3b20fb865b23e27af751022.tar.bz2 |
[Ada] Fix parser not detecting casing issues in keywords
gcc/ada/
* scng.adb (Scan): Check if any letter of the token is
uppercase.
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/scng.adb | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ada/scng.adb b/gcc/ada/scng.adb index 162d882..0d5cff8 100644 --- a/gcc/ada/scng.adb +++ b/gcc/ada/scng.adb @@ -1180,6 +1180,8 @@ package body Scng is end if; end Start_Of_Wide_Character; + Token_Contains_Uppercase : Boolean; + -- Start of processing for Scan begin @@ -1241,6 +1243,8 @@ package body Scng is Token_Ptr := Scan_Ptr; + Token_Contains_Uppercase := False; + -- Here begins the main case statement which transfers control on the -- basis of the non-blank character we have encountered. @@ -1999,6 +2003,7 @@ package body Scng is -- Upper case letters when 'A' .. 'Z' => + Token_Contains_Uppercase := True; Name_Len := 1; Underline_Found := False; Name_Buffer (1) := @@ -2347,6 +2352,8 @@ package body Scng is Accumulate_Checksum (Source (Scan_Ptr)); elsif Source (Scan_Ptr) in 'A' .. 'Z' then + Token_Contains_Uppercase := True; + Name_Buffer (Name_Len + 1) := Character'Val (Character'Pos (Source (Scan_Ptr)) + 32); Accumulate_Checksum (Name_Buffer (Name_Len + 1)); @@ -2601,7 +2608,7 @@ package body Scng is -- Ada 2005 (AI-340): Do not apply the style check in case of -- MOD attribute. - if Source (Token_Ptr) <= 'Z' + if Token_Contains_Uppercase and then (Prev_Token /= Tok_Apostrophe or else (Token /= Tok_Access and then |