-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.
\ No newline at end of file
+ * sem_warn.adb (Warn_On_Useless_Assignment): Do not warn if the
+ second assignment is at the same source position as the first.
\ No newline at end of file
-- 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)