Commit e9238cc1 by Arnaud Charlet

[multiple changes]

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.

From-SVN: r251768
parent a4f4dbdb
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:
......
......@@ -6693,7 +6693,11 @@ package body Sem_Ch6 is
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);
......
......@@ -2946,6 +2946,14 @@ package body Sem_Ch8 is
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
......
......@@ -2533,8 +2533,11 @@ package body Sem_Res is
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).
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment