+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.
begin
if Is_Serious_Error then
+
-- We always set Error_Posted on the node itself
Set_Error_Posted (N);
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;
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;
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;
if Withed then
Error_Msg_N -- CODEFIX
- ("redundant with clause??", Clause);
+ ("redundant with clause?r?", Clause);
end if;
end;
end if;
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