diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2021-01-02 00:51:21 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2021-05-04 05:17:29 -0400 |
commit | d4b0a294694a145aa33a25d1f923f4085b8f7d99 (patch) | |
tree | 255d19fc97528d34027860dabd117c0291addec9 /gcc | |
parent | b65d9aff59bdaa77578de0666077fdf671a020bc (diff) | |
download | gcc-d4b0a294694a145aa33a25d1f923f4085b8f7d99.zip gcc-d4b0a294694a145aa33a25d1f923f4085b8f7d99.tar.gz gcc-d4b0a294694a145aa33a25d1f923f4085b8f7d99.tar.bz2 |
[Ada] Fix inconsistent handling of character set control switches
gcc/ada/
* csets.adb (Initialize): Refactor into CASE statement; raise
exception on unsupported code of character set (it will be
gently rejected earlier when scanning command line switches).
* switch-b.adb (Scan_Binder_Switches): Refactor into a
membership expression; add missing '9' choice; reorder as
described by GNAT UG, section 4.3.11.
* switch-c.adb (Scan_Front_End_Switches): Refactor into a
membership expression and reorder as above.
* doc/gnat_ugn/building_executable_programs_with_gnat.rst
(gnatic): Mention '5' as an allowed value for "c".
* gnat_ugn.texi: Regenerate.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/csets.adb | 48 | ||||
-rw-r--r-- | gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst | 2 | ||||
-rw-r--r-- | gcc/ada/gnat_ugn.texi | 4 | ||||
-rw-r--r-- | gcc/ada/switch-b.adb | 8 | ||||
-rw-r--r-- | gcc/ada/switch-c.adb | 9 |
5 files changed, 30 insertions, 41 deletions
diff --git a/gcc/ada/csets.adb b/gcc/ada/csets.adb index 1961fcd..29a1592 100644 --- a/gcc/ada/csets.adb +++ b/gcc/ada/csets.adb @@ -1091,38 +1091,40 @@ package body Csets is begin -- Set Fold_Upper table from source code indication - if Identifier_Character_Set = '1' - or else Identifier_Character_Set = 'w' - then - Fold_Upper := Fold_Latin_1; + case Identifier_Character_Set is + when '1' | 'w' => + Fold_Upper := Fold_Latin_1; - elsif Identifier_Character_Set = '2' then - Fold_Upper := Fold_Latin_2; + when '2' => + Fold_Upper := Fold_Latin_2; - elsif Identifier_Character_Set = '3' then - Fold_Upper := Fold_Latin_3; + when '3' => + Fold_Upper := Fold_Latin_3; - elsif Identifier_Character_Set = '4' then - Fold_Upper := Fold_Latin_4; + when '4' => + Fold_Upper := Fold_Latin_4; - elsif Identifier_Character_Set = '5' then - Fold_Upper := Fold_Cyrillic; + when '5' => + Fold_Upper := Fold_Cyrillic; - elsif Identifier_Character_Set = 'p' then - Fold_Upper := Fold_IBM_PC_437; + when '9' => + Fold_Upper := Fold_Latin_9; - elsif Identifier_Character_Set = '8' then - Fold_Upper := Fold_IBM_PC_850; + when 'p' => + Fold_Upper := Fold_IBM_PC_437; - elsif Identifier_Character_Set = '9' then - Fold_Upper := Fold_Latin_9; + when '8' => + Fold_Upper := Fold_IBM_PC_850; - elsif Identifier_Character_Set = 'f' then - Fold_Upper := Fold_Full_Upper_Half; + when 'f' => + Fold_Upper := Fold_Full_Upper_Half; - else -- Identifier_Character_Set = 'n' - Fold_Upper := Fold_No_Upper_Half; - end if; + when 'n' => + Fold_Upper := Fold_No_Upper_Half; + + when others => + raise Program_Error; + end case; -- Use Fold_Upper table to compute Fold_Lower table diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst index 82e992a..91fae31 100644 --- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst +++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst @@ -1896,7 +1896,7 @@ Alphabetical List of All Switches .. index:: -gnati (gcc) :switch:`-gnati{c}` - Identifier character set (``c`` = 1/2/3/4/8/9/p/f/n/w). + Identifier character set (``c`` = 1/2/3/4/5/9/p/8/f/n/w). For details of the possible selections for ``c``, see :ref:`Character_Set_Control`. diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index ae8f758..5592314 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -21,7 +21,7 @@ @copying @quotation -GNAT User's Guide for Native Platforms , Dec 11, 2020 +GNAT User's Guide for Native Platforms , Apr 12, 2021 AdaCore @@ -9462,7 +9462,7 @@ For further details see @ref{f,,Elaboration Order Handling in GNAT}. @item @code{-gnati@emph{c}} -Identifier character set (@code{c} = 1/2/3/4/8/9/p/f/n/w). +Identifier character set (@code{c} = 1/2/3/4/5/9/p/8/f/n/w). For details of the possible selections for @code{c}, see @ref{31,,Character Set Control}. @end table diff --git a/gcc/ada/switch-b.adb b/gcc/ada/switch-b.adb index 012f4ee..a735978 100644 --- a/gcc/ada/switch-b.adb +++ b/gcc/ada/switch-b.adb @@ -369,13 +369,7 @@ package body Switch.B is Ptr := Ptr + 1; C := Switch_Chars (Ptr); - if C in '1' .. '5' - or else C = '8' - or else C = 'p' - or else C = 'f' - or else C = 'n' - or else C = 'w' - then + if C in '1' .. '5' | '9' | 'p' | '8' | 'f' | 'n' | 'w' then Identifier_Character_Set := C; Ptr := Ptr + 1; else diff --git a/gcc/ada/switch-c.adb b/gcc/ada/switch-c.adb index ff6c81a..b97e0d6 100644 --- a/gcc/ada/switch-c.adb +++ b/gcc/ada/switch-c.adb @@ -929,14 +929,7 @@ package body Switch.C is Ptr := Ptr + 1; C := Switch_Chars (Ptr); - if C in '1' .. '5' - or else C = '8' - or else C = '9' - or else C = 'p' - or else C = 'f' - or else C = 'n' - or else C = 'w' - then + if C in '1' .. '5' | '8' | 'p' | '9' | 'f' | 'n' | 'w' then Identifier_Character_Set := C; Ptr := Ptr + 1; |