+2017-09-06 Yannick Moy <moy@adacore.com>
+
+ * sem_res.adb (Resolve): Update message for function call as statement.
+
+2017-09-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (Check_Returns): Clean up warnings coming from
+ generated bodies for renamings that are completions, when renamed
+ procedure is No_Return.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality
+ rule in 6.5.1 (7/2): if a renaming is a completion of a subprogram
+ with No_Return, the renamed entity must be No_Return as well.
+
2017-09-06 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch5.adb, freeze.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb:
Error_Msg_N
("implied return after this statement "
& "would have raised Program_Error", Last_Stm);
- else
+
+ -- In normal compilation mode, do not warn on a generated
+ -- call (e.g. in the body of a renaming as completion).
+
+ elsif Comes_From_Source (Last_Stm) then
Error_Msg_N
("implied return after this statement "
& "will raise Program_Error??", Last_Stm);
Check_Fully_Conformant (New_S, Rename_Spec);
Set_Public_Status (New_S);
+ if No_Return (Rename_Spec)
+ and then not No_Return (Entity (Nam))
+ then
+ Error_Msg_N ("renaming completes a No_Return procedure", N);
+ Error_Msg_N
+ ("\renamed procedure must be nonreturning (RM 6.5.1 (7/2))", N);
+ end if;
+
-- The specification does not introduce new formals, but only
-- repeats the formals of the original subprogram declaration.
-- For cross-reference purposes, and for refactoring tools, we
and then Ekind (Entity (Name (N))) = E_Function
then
Error_Msg_NE
- ("cannot use function & in a procedure call",
+ ("cannot use call to function & as a statement",
Name (N), Entity (Name (N)));
+ Error_Msg_N
+ ("\return value of a function call cannot be ignored",
+ Name (N));
-- Otherwise give general message (not clear what cases this
-- covers, but no harm in providing for them).