aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnat/s-valboo.adb
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2024-09-12 12:45:27 +0200
committerMarc Poulhiès <dkm@gcc.gnu.org>2024-10-08 10:37:15 +0200
commitc4d9a73e12b25a9f0ac152df2da5ceac80bd9d6a (patch)
tree88e2c44e4bb88acb7e30bc284dd49b7cebdeb153 /gcc/ada/libgnat/s-valboo.adb
parentd77ba2eec2a560514de162bf9499194250f291e2 (diff)
downloadgcc-c4d9a73e12b25a9f0ac152df2da5ceac80bd9d6a.zip
gcc-c4d9a73e12b25a9f0ac152df2da5ceac80bd9d6a.tar.gz
gcc-c4d9a73e12b25a9f0ac152df2da5ceac80bd9d6a.tar.bz2
ada: Fix bogus Constraint_Error for 'Wide_Wide_Value on wide enumeration literal
The problem is that 'Wide_Wide_Value is piggybacked on 'Value and the latter invokes System.Val_Util.Normalize_String, which incorrectly normalizes the input string in the presence of enumeration literals with wide characters. gcc/ada/ChangeLog: PR ada/115507 * exp_imgv.adb (Expand_Valid_Value_Attribute): Add actual parameter for Is_Wide formal in the call to Valid_Value_Enumeration_NN. (Expand_Value_Attribute): Likewise. * libgnat/s-vaen16.ads (Value_Enumeration_16): Add Is_Wide formal. (Valid_Value_Enumeration_16): Likewise. * libgnat/s-vaen32.ads (Value_Enumeration_32): Likewise. (Valid_Value_Enumeration_32): Likewise. * libgnat/s-vaenu8.ads (Value_Enumeration_8): Likewise. (Valid_Value_Enumeration_8): Likewise. * libgnat/s-valboo.adb (Value_Boolean): Pass True for To_Upper_Case formal parameter in call to Normalize_String. * libgnat/s-valcha.adb (Value_Character): Likewise. * libgnat/s-valuen.ads (Value_Enumeration): Add Is_Wide formal. (Valid_Value_Enumeration): Likewise. * libgnat/s-valuen.adb (Value_Enumeration_Pos): Likewise and pass its negation for To_Upper_Case formal in call to Normalize_String. (Valid_Value_Enumeration): Add Is_Wide formal and forward it in call to Value_Enumeration_Pos. (Value_Enumeration): Likewise. * libgnat/s-valuti.ads (Normalize_String): Add To_Upper_Case formal parameter and adjust post-condition accordingly. * libgnat/s-valuti.adb (Normalize_String): Add To_Upper_Case formal parameter and adjust implementation accordingly. * libgnat/s-valwch.adb (Value_Wide_Wide_Character): Pass False for To_Upper_Case formal parameter in call to Normalize_String.
Diffstat (limited to 'gcc/ada/libgnat/s-valboo.adb')
-rw-r--r--gcc/ada/libgnat/s-valboo.adb2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/ada/libgnat/s-valboo.adb b/gcc/ada/libgnat/s-valboo.adb
index 5cb3b98..f7a13ba 100644
--- a/gcc/ada/libgnat/s-valboo.adb
+++ b/gcc/ada/libgnat/s-valboo.adb
@@ -53,7 +53,7 @@ is
S : String (Str'Range) := Str;
begin
- Normalize_String (S, F, L);
+ Normalize_String (S, F, L, To_Upper_Case => True);
pragma Assert (F = System.Val_Spec.First_Non_Space_Ghost
(S, Str'First, Str'Last));