gnat_rm.texi: Add note on Old giving warning when applied to constant
authorRobert Dewar <dewar@adacore.com>
Wed, 28 May 2008 13:05:35 +0000 (15:05 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 28 May 2008 13:05:35 +0000 (15:05 +0200)
2008-05-28  Robert Dewar  <dewar@adacore.com>

* gnat_rm.texi: Add note on Old giving warning when applied to constant

* sem_attr.adb (Analyze_Attribute, case Old): Give warning if prefix is
a constant

From-SVN: r136078

gcc/ada/gnat_rm.texi
gcc/ada/sem_attr.adb

index 0d2d0ff28b55470df7dce8ac8ceb06bcd56c667a..69baaa202c227d2365deda178bfd7baf7b125da7 100644 (file)
@@ -5803,6 +5803,10 @@ package body Old_Pkg is
 end Old_Pkg;
 @end smallexample
 
+@noindent
+Note that it is allowed to apply 'Old to a constant entity, but this will
+result in a warning, since the old and new values will always be the same.
+
 @node Passed_By_Reference
 @unnumberedsec Passed_By_Reference
 @cindex Parameters, when passed by reference
index 0cb2ace755e11d256bf0c40dcda37ede374397e0..14f9102d369e2b00a0593c1bbc3101acf42b8900 100644 (file)
@@ -3501,6 +3501,13 @@ package body Sem_Attr is
             Error_Attr ("attribute % cannot apply to limited objects", P);
          end if;
 
+         if Is_Entity_Name (P)
+           and then Is_Constant_Object (Entity (P))
+         then
+            Error_Msg_N
+              ("?attribute Old applied to constant has no effect", P);
+         end if;
+
          --  Check that the expression does not refer to local entities
 
          Check_Local : declare