diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 96b016151fcb30ef87d215141c119c2de435e885..a3b21c3fe7cad1d7c22d13e2465b610e2838e397 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -5275,7 +5275,8 @@ Arguments for predefined operators and attributes are validity checked. This includes all operators in package @code{Standard}, the shift operators defined as intrinsic in package @code{Interfaces} and operands for attributes such as @code{Pos}. Checks are also made -on individual component values for composite comparisons. +on individual component values for composite comparisons, and on the +expressions in type conversions and qualified expressions. @item -gnatVp @emph{Validity checks for parameters.} diff --git a/gcc/ada/s-wchcnv.adb b/gcc/ada/s-wchcnv.adb index e3afa9c05e7b3ac9f2ebb48372838514d62fe2ea..ecbcb26c4bb82a8410ae1794532b26125f844416 100644 --- a/gcc/ada/s-wchcnv.adb +++ b/gcc/ada/s-wchcnv.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2006, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -411,9 +411,26 @@ package body System.WCh_Cnv is end if; when WCEM_Brackets => + + -- Values in the range 0-255 are directly output. Note that there + -- is some issue with [ (16#5B#] since this will cause confusion + -- if the resulting string is interpreted using brackets encoding. + + -- One possibility would be to always output [ as ["5B"] but in + -- practice this is undesirable, since for example normal use of + -- Wide_Text_IO for output (much more common than input), really + -- does want to be able to say something like + + -- Put_Line ("Start of output [first run]"); + + -- and have it come out as intended, rather than contaminated by + -- a ["5B"] sequence in place of the left bracket. + if Val < 256 then Out_Char (Character'Val (Val)); + -- Otherwise use brackets notation for vales greater than 255 + else Out_Char ('['); Out_Char ('"');