[Bug ada/12523] New: "Ada.Text_IO.Enumeration_IO" doesn't convert its output correctly to lower case, when the enumeration contains non-ISO-646 characters.

sparre at nbi dot dk gcc-bugzilla@gcc.gnu.org
Mon Oct 6 13:36:00 GMT 2003


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12523

           Summary: "Ada.Text_IO.Enumeration_IO" doesn't convert its output
                    correctly to lower case, when the enumeration contains
                    non-ISO-646 characters.
           Product: gcc
           Version: 3.2.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sparre at nbi dot dk
                CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: linux-x86
GCC target triplet: linux-x86

It appears that "Ada.Text_IO.Enumeration_IO" doesn't convert its output
correctly to lower case, when the enumeration contains non-ISO-646 characters.

It appears that the reason for the problem is an extremely ugly hack in
"Ada.Text_IO.Enumeration_AUX".  I suggest that the OS/2 specific problems in
"Ada.Characters.Handling.To_Upper" and "Ada.Characters.Handling.To_Lower" are
corrected and that the local versions of "To_Upper" and "To_Lower" are removed
from "Ada.Text_IO.Enumeration_AUX".

 * A.3.2(25) and A.3.2(26) contains the definition of lower-case and
   upper-case letters.

 * A.10.10(10) and A.10.10(11) explains that Ada.Text_IO.Enumeration_IO.Put
   should should output in lower-case or upper-case depending on the parameter
   Set.

==============================================================================
GNAT version:

GNATMAKE 3.2.2 20030222 (3.2.2-4) Copyright 1995-2001 Free Software Foundation, 
Inc.

==============================================================================
Output:

Upper case: Á
Lower case: Á
Upper case: Ð
Lower case: Ð
Upper case: Í
Lower case: Í
Upper case: Ó
Lower case: Ó
Upper case: Ú
Lower case: Ú
Upper case: Ý
Lower case: Ý
Upper case: Æ
Lower case: Æ
Upper case: Ø
Lower case: Ø

==============================================================================
Expected output:

Upper case: Á
Lower case: á
Upper case: Ð
Lower case: ð
Upper case: Í
Lower case: í
Upper case: Ó
Lower case: ó
Upper case: Ú
Lower case: ú
Upper case: Ý
Lower case: ý
Upper case: Æ
Lower case: æ
Upper case: Ø
Lower case: ø

==============================================================================
Source code:

--
with Ada.Text_IO; use Ada.Text_IO;
procedure Example is
   type Some_Non_ASCII_Letters is (á, ð, í, ó, ú, ý, æ, ø);
   package Non_ASCII_Letter_Text_IO is
     new Enumeration_IO (Enum => Some_Non_ASCII_Letters);
   use Non_ASCII_Letter_Text_IO;
begin
   for Letter in Some_Non_ASCII_Letters loop
      Put (Item => "Upper case: ");
      Put (Item => Letter, Set => Upper_Case);
      New_Line;
      Put (Item => "Lower case: ");
      Put (Item => Letter, Set => Lower_Case);
      New_Line;
   end loop;
end Example;
--



More information about the Gcc-bugs mailing list