gnat_rm.texi, [...]: Update documentation.
authorYannick Moy <moy@adacore.com>
Tue, 20 Mar 2012 09:23:26 +0000 (09:23 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 20 Mar 2012 09:23:26 +0000 (10:23 +0100)
2012-03-20  Yannick Moy  <moy@adacore.com>

* gnat_rm.texi, sem_attr.ads: Update documentation.

From-SVN: r185562

gcc/ada/ChangeLog
gcc/ada/gnat_rm.texi
gcc/ada/sem_attr.ads

index 5a6aa8c5d1d63f941fb833b435860e1ef970bbde..4e5280b8137755f7f80467bf8c15ae41d850d30b 100644 (file)
@@ -1,3 +1,7 @@
+2012-03-20  Yannick Moy  <moy@adacore.com>
+
+       * gnat_rm.texi, sem_attr.ads: Update documentation.
+
 2012-03-19  Yannick Moy  <moy@adacore.com>
 
        * sem_ch6.adb: Minor code clean up.
index e0ab56f4c2c26080d5b889d8e77526913b90988b..96e3ab150f20aa424df2a83a1973c11dcfeb4ad6 100644 (file)
@@ -285,6 +285,7 @@ Implementation Defined Attributes
 * Unconstrained_Array::
 * Universal_Literal_String::
 * Unrestricted_Access::
+* Valid_Scalars::
 * VADS_Size::
 * Value_Size::
 * Wchar_T_Size::
@@ -6035,6 +6036,7 @@ consideration, you should minimize the use of these attributes.
 * Unconstrained_Array::
 * Universal_Literal_String::
 * Unrestricted_Access::
+* Valid_Scalars::
 * VADS_Size::
 * Value_Size::
 * Wchar_T_Size::
@@ -6991,6 +6993,24 @@ scope. For instance, a function cannot use @code{Unrestricted_Access}
 to create a unconstrained pointer and then return that value to the
 caller.
 
+@node Valid_Scalars
+@unnumberedsec Valid_Scalars
+@findex Valid_Scalars
+@noindent
+The @code{'Valid_Scalars} attribute is intended to make it easier to
+check the validity of scalar subcomponents of composite objects.  It
+is defined for any prefix @code{X} that denotes a scalar or composite
+object (after any implicit dereference), that is not of classwide type
+or of a formal generic type with an unknown discriminant.
+@code{X'Valid_Scalars} yields True if and only if @code{X'Valid}
+yields True, if @code{X} is a scalar object, or @code{Y'Valid} yields
+True for every scalar subcomponent @code{Y} of @code{X}, if @code{X}
+is a composite object. If computing the value of
+@code{X'Valid_Scalars} involves evaluations of subtype predicates, it
+is unspecified in which order these evaluations take place, or if they
+take place at all in case the result is False. The value of this
+attribute is of the predefined type Boolean.
+
 @node VADS_Size
 @unnumberedsec VADS_Size
 @cindex @code{Size}, VADS compatibility
index 25e6adf3519a670b6292f43b8647a509a4f7c949..71ac668c7578d43c4517983c769c35d27e2cf099 100644 (file)
@@ -554,7 +554,12 @@ package Sem_Attr is
       -------------------
 
       Attribute_Valid_Scalars => True,
-      --  Typ'Valid_Scalars applies to ???
+      --  Obj'Valid_Scalars applies to objects of scalar types, on which it is
+      --  equivalent to Obj'Valid, and objects of array and record types, on
+      --  which it amounts to applying 'Valid to each subcomponent of Obj. It
+      --  does not apply to prefixes of classwide type, or of a formal generic
+      --  type that has an unknown discriminant (which could be instantiated
+      --  with a classwide type).
 
       ----------------
       -- Value_Size --