mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 23:14:49 +02:00
[Ada] Spurious warning on call with out parameter in expression function
2019-10-10 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_warn.adb (Warn_On_Useless_Assignment): Do not warn if the second assignment is at the same source position as the first. From-SVN: r276831
This commit is contained in:
committed by
Pierre-Marie de Rodat
parent
6c142b14a0
commit
4e866f0845
@@ -1,8 +1,4 @@
|
||||
2019-10-10 Gary Dismukes <dismukes@adacore.com>
|
||||
2019-10-10 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem_util.adb (Enclosing_Subprogram): Handle the case of
|
||||
E_Entry_Family, returning the entry family's associated
|
||||
Protected_Body_Subprogram (as was already done for E_Entry).
|
||||
* exp_ch9.adb (Expand_N_Accept_Statement): Call Reset_Scopes_To
|
||||
on the block created for an accept statement to reset the scopes
|
||||
of any local entities to the block scope.
|
||||
* sem_warn.adb (Warn_On_Useless_Assignment): Do not warn if the
|
||||
second assignment is at the same source position as the first.
|
||||
@@ -4546,9 +4546,15 @@ package body Sem_Warn is
|
||||
-- to capture the value. We are not going to capture any value, but
|
||||
-- the warning message depends on the same kind of conditions.
|
||||
|
||||
-- If the assignment appears as an out-parameter in a call within an
|
||||
-- expression function it may be detected twice: once when expression
|
||||
-- itself is analyzed, and once when the constructed body is analyzed.
|
||||
-- We don't want to emit a spurious warning in this case.
|
||||
|
||||
if Is_Assignable (Ent)
|
||||
and then not Is_Return_Object (Ent)
|
||||
and then Present (Last_Assignment (Ent))
|
||||
and then Last_Assignment (Ent) /= N
|
||||
and then not Is_Imported (Ent)
|
||||
and then not Is_Exported (Ent)
|
||||
and then Safe_To_Capture_Value (N, Ent)
|
||||
|
||||
Reference in New Issue
Block a user