summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-28 13:05:35 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-28 13:05:35 +0000
commit159f57c8342cd9feb7259a365838288cf2eeeabd (patch)
treefb31690627a5834458cdbda545cabae658c2046f
parente2793852c3d43623c06d60c76de6a0bed0eef25b (diff)
downloadppe42-gcc-159f57c8342cd9feb7259a365838288cf2eeeabd.tar.gz
ppe42-gcc-159f57c8342cd9feb7259a365838288cf2eeeabd.zip
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 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136078 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/gnat_rm.texi4
-rw-r--r--gcc/ada/sem_attr.adb7
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index 0d2d0ff28b5..69baaa202c2 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -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
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index 0cb2ace755e..14f9102d369 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -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
OpenPOWER on IntegriCloud