diff options
author | Bob Duff <duff@adacore.com> | 2020-03-30 10:14:27 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-06-15 04:04:21 -0400 |
commit | eb72521915b1f109b3b65aa384005c2527f76c31 (patch) | |
tree | 59fbf0467f5bf4c8384ab12ba6d48f866e88f85b /gcc/ada/libgnat | |
parent | 6c04efdd9c2a21f719c6fabcf267d03d7127982f (diff) | |
download | gcc-eb72521915b1f109b3b65aa384005c2527f76c31.zip gcc-eb72521915b1f109b3b65aa384005c2527f76c31.tar.gz gcc-eb72521915b1f109b3b65aa384005c2527f76c31.tar.bz2 |
[Ada] Put_Image improvements for strings
2020-06-15 Bob Duff <duff@adacore.com>
gcc/ada/
* exp_attr.adb (Put_Image): Use underlying type for strings.
Remove unchecked union processing.
* exp_put_image.adb (Tagged_Put_Image_Enabled): Use -gnatd_z to
enable default Put_Image for tagged types. This allows testing
that feature.
(Build_String_Put_Image_Call): Set Conversion_OK flag.
(Make_Component_List_Attributes): Remove unchecked union
processing.
(Enable_Put_Image): Disable for unchecked unions. Enable for
nonscalar types (which were mistakenly disabled in earlier
changes).
* debug.adb: Document -gnatd_z switch.
* libgnat/s-putima.adb (Put_Image_String, Put_Image_Wide_String,
Put_Image_Wide_Wide_String): Double double-quote characters.
Forget about special handling of control characters for now --
that's rare enough to not be a priority, and it's not clear what
the right thing to do is anyway.
* namet.adb: Minor: Improve debugger-friendliness.
* sinfo.ads: Minor: Add "???" comment.
Diffstat (limited to 'gcc/ada/libgnat')
-rw-r--r-- | gcc/ada/libgnat/s-putima.adb | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/gcc/ada/libgnat/s-putima.adb b/gcc/ada/libgnat/s-putima.adb index 50597b2..2f976ac 100644 --- a/gcc/ada/libgnat/s-putima.adb +++ b/gcc/ada/libgnat/s-putima.adb @@ -142,17 +142,25 @@ package body System.Put_Images is procedure Put_Image_String (S : in out Sink'Class; X : String) is begin - -- ????We should double double quotes, and maybe do something nice with - -- control characters. Put_UTF_8 (S, """"); - Put_String (S, X); + for C of X loop + if C = '"' then + Put_UTF_8 (S, """"); + end if; + Put_Character (S, C); + end loop; Put_UTF_8 (S, """"); end Put_Image_String; procedure Put_Image_Wide_String (S : in out Sink'Class; X : Wide_String) is begin Put_UTF_8 (S, """"); - Put_Wide_String (S, X); + for C of X loop + if C = '"' then + Put_UTF_8 (S, """"); + end if; + Put_Wide_Character (S, C); + end loop; Put_UTF_8 (S, """"); end Put_Image_Wide_String; @@ -160,7 +168,12 @@ package body System.Put_Images is (S : in out Sink'Class; X : Wide_Wide_String) is begin Put_UTF_8 (S, """"); - Put_Wide_Wide_String (S, X); + for C of X loop + if C = '"' then + Put_UTF_8 (S, """"); + end if; + Put_Wide_Wide_Character (S, C); + end loop; Put_UTF_8 (S, """"); end Put_Image_Wide_Wide_String; |