aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2009-04-29 09:31:29 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2009-04-29 11:31:29 +0200
commit8f983e64b28624ef2cd8d25e1257820c197c6196 (patch)
tree91fd1eec395775dfd85bf127012095b84974aed8 /gcc
parent132410cb49cc8dbb163e119e74fa54f389c6153d (diff)
downloadgcc-8f983e64b28624ef2cd8d25e1257820c197c6196.zip
gcc-8f983e64b28624ef2cd8d25e1257820c197c6196.tar.gz
gcc-8f983e64b28624ef2cd8d25e1257820c197c6196.tar.bz2
sem_ch3.adb (Check_Abstract_Overriding): Improve error message when an abstract operation of a progenitor is not...
2009-04-29 Ed Schonberg <schonberg@adacore.com> * sem_ch3.adb (Check_Abstract_Overriding): Improve error message when an abstract operation of a progenitor is not properly overridden by an operation of a derived synchronized type. From-SVN: r146934
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_ch3.adb27
2 files changed, 31 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3a114f4..268cd62 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-29 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Check_Abstract_Overriding): Improve error message when
+ an abstract operation of a progenitor is not properly overridden by an
+ operation of a derived synchronized type.
+
2009-04-29 Robert Dewar <dewar@adacore.com>
* mlib-prj.adb, mlib-tgt.adb, mlib-tgt.ads, prj-nmsc.adb,
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index be87d0c..8f3d3f5 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2009, 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- --
@@ -8321,7 +8321,9 @@ package body Sem_Ch3 is
-- Error message below needs rewording (remember comma
-- in -gnatj mode) ???
- if Ekind (First_Formal (Subp)) = E_In_Parameter then
+ if Ekind (First_Formal (Subp)) = E_In_Parameter
+ and then Ekind (Subp) /= E_Function
+ then
if not Is_Predefined_Dispatching_Operation (Subp) then
Error_Msg_NE
("first formal of & must be of mode `OUT`, " &
@@ -8337,6 +8339,27 @@ package body Sem_Ch3 is
Error_Msg_NE
("interface subprogram & must be overridden",
T, Subp);
+
+ -- Examine primitive operations of synchronized type,
+ -- to find homonyms that have the wrong profile.
+
+ declare
+ Prim : Entity_Id;
+
+ begin
+ Prim :=
+ First_Entity (Corresponding_Concurrent_Type (T));
+ while Present (Prim) loop
+ if Chars (Prim) = Chars (Subp) then
+ Error_Msg_NE
+ ("profile is not type conformant with "
+ & "prefixed view profile of "
+ & "inherited operation&", Prim, Subp);
+ end if;
+
+ Next_Entity (Prim);
+ end loop;
+ end;
end if;
end if;