summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ada/ChangeLog14
-rw-r--r--gcc/ada/errout.adb1
-rw-r--r--gcc/ada/errutil.adb3
-rw-r--r--gcc/ada/sem_case.adb5
-rw-r--r--gcc/ada/sem_ch10.adb4
-rw-r--r--gcc/ada/sem_ch13.adb18
6 files changed, 37 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a69659d6e3d..0a0f0390c7e 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,17 @@
+2016-04-27 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch10.adb, sem_case.adb: Mark messages udner -gnatwr when needed.
+
+2016-04-27 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * errout.adb, errutil.adb: Minor reformatting.
+
+2016-04-27 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications, case Pre/Post):
+ Check that the classwide version is illegal when the prefix is
+ an operation of an untagged synchronized type.
+
2016-04-27 Arnaud Charlet <charleT@adacore.com>
* sinput-l.ads, sem_ch13.adb: Minor editing.
diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb
index a0032810dab..1c794de3c9b 100644
--- a/gcc/ada/errout.adb
+++ b/gcc/ada/errout.adb
@@ -3082,6 +3082,7 @@ package body Errout is
begin
if Is_Serious_Error then
+
-- We always set Error_Posted on the node itself
Set_Error_Posted (N);
diff --git a/gcc/ada/errutil.adb b/gcc/ada/errutil.adb
index d4e95107921..3a8f0fbf5d8 100644
--- a/gcc/ada/errutil.adb
+++ b/gcc/ada/errutil.adb
@@ -314,8 +314,7 @@ package body Errutil is
end if;
elsif Errors.Table (Cur_Msg).Warn
- or else
- Errors.Table (Cur_Msg).Style
+ or else Errors.Table (Cur_Msg).Style
then
Warnings_Detected := Warnings_Detected + 1;
diff --git a/gcc/ada/sem_case.adb b/gcc/ada/sem_case.adb
index ee845ee1947..8df46f067de 100644
--- a/gcc/ada/sem_case.adb
+++ b/gcc/ada/sem_case.adb
@@ -1128,10 +1128,7 @@ package body Sem_Case is
procedure No_OP (C : Node_Id) is
begin
if Nkind (C) = N_Range and then Warn_On_Redundant_Constructs then
- Error_Msg_N ("choice is an empty range?", C);
-
- else
- null;
+ Error_Msg_N ("choice is an empty range?r?", C);
end if;
end No_OP;
diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb
index c02cd4f4e56..5ab4afb4be8 100644
--- a/gcc/ada/sem_ch10.adb
+++ b/gcc/ada/sem_ch10.adb
@@ -557,7 +557,7 @@ package body Sem_Ch10 is
or else Used_In_Spec)
then
Error_Msg_N -- CODEFIX
- ("redundant with clause in body??", Clause);
+ ("redundant with clause in body?r?", Clause);
end if;
Used_In_Body := False;
@@ -586,7 +586,7 @@ package body Sem_Ch10 is
if Withed then
Error_Msg_N -- CODEFIX
- ("redundant with clause??", Clause);
+ ("redundant with clause?r?", Clause);
end if;
end;
end if;
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 8afc5429e48..54cc886a6a5 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -3129,6 +3129,24 @@ package body Sem_Ch13 is
Pname := Name_Postcondition;
end if;
+ -- Check that the class-wide predicate cannot be applied to
+ -- an operation of a synchronized type that is not a tagged
+ -- type. Other legality checks are performed when analyzing
+ -- the contract of the operation.
+
+ if Class_Present (Aspect)
+ and then Is_Concurrent_Type (Current_Scope)
+ and then not Is_Tagged_Type (Current_Scope)
+ and then Ekind_In (E, E_Entry, E_Function, E_Procedure)
+ then
+ Error_Msg_Name_1 := Original_Aspect_Pragma_Name (Aspect);
+ Error_Msg_N
+ ("aspect % can only be specified for a primitive "
+ & "operation of a tagged type", Aspect);
+
+ goto Continue;
+ end if;
+
-- If the expressions is of the form A and then B, then
-- we generate separate Pre/Post aspects for the separate
-- clauses. Since we allow multiple pragmas, there is no