[Ada] Spurious ineffective use_clause warning
This patch fixes an issue whereby expansion of post conditions may lead to spurious ineffective use_clause warnings when a use type clause is present in a package specification and a use package clause exists in the package body on the package containing said type. 2019-09-18 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_ch8.adb (Use_One_Type): Add guard to prevent warning on a reundant use package clause where there is no previous use_clause in the chain. gcc/testsuite/ * gnat.dg/warn30.adb, gnat.dg/warn30.ads: New testcase. From-SVN: r275861
This commit is contained in:
parent
1b2f53bb9a
commit
483af72e4b
@ -1,3 +1,9 @@
|
||||
2019-09-18 Justin Squirek <squirek@adacore.com>
|
||||
|
||||
* sem_ch8.adb (Use_One_Type): Add guard to prevent warning on a
|
||||
reundant use package clause where there is no previous
|
||||
use_clause in the chain.
|
||||
|
||||
2019-09-18 Justin Squirek <squirek@adacore.com>
|
||||
|
||||
* exp_ch4.adb (Expand_N_Type_Conversion): Add calculation of an
|
||||
|
@ -10337,11 +10337,18 @@ package body Sem_Ch8 is
|
||||
-- The package where T is declared is already used
|
||||
|
||||
elsif In_Use (Scope (T)) then
|
||||
Error_Msg_Sloc :=
|
||||
Sloc (Find_Most_Prev (Current_Use_Clause (Scope (T))));
|
||||
Error_Msg_NE -- CODEFIX
|
||||
("& is already use-visible through package use clause #??",
|
||||
Id, T);
|
||||
-- Due to expansion of contracts we could be attempting to issue
|
||||
-- a spurious warning - so verify there is a previous use clause.
|
||||
|
||||
if Current_Use_Clause (Scope (T)) /=
|
||||
Find_Most_Prev (Current_Use_Clause (Scope (T)))
|
||||
then
|
||||
Error_Msg_Sloc :=
|
||||
Sloc (Find_Most_Prev (Current_Use_Clause (Scope (T))));
|
||||
Error_Msg_NE -- CODEFIX
|
||||
("& is already use-visible through package use clause #??",
|
||||
Id, T);
|
||||
end if;
|
||||
|
||||
-- The current scope is the package where T is declared
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
2019-09-18 Justin Squirek <squirek@adacore.com>
|
||||
|
||||
* gnat.dg/warn30.adb, gnat.dg/warn30.ads: New testcase.
|
||||
|
||||
2019-09-18 Justin Squirek <squirek@adacore.com>
|
||||
|
||||
* gnat.dg/access8.adb, gnat.dg/access8_pkg.adb,
|
||||
|
10
gcc/testsuite/gnat.dg/warn30.adb
Normal file
10
gcc/testsuite/gnat.dg/warn30.adb
Normal file
@ -0,0 +1,10 @@
|
||||
-- { dg-do compile }
|
||||
-- { dg-options "-gnatwa" }
|
||||
with Interfaces; use Interfaces;
|
||||
|
||||
package body Warn30 is
|
||||
procedure Incr (X : in out Interfaces.Integer_64) is
|
||||
begin
|
||||
X := X + 1;
|
||||
end Incr;
|
||||
end Warn30;
|
6
gcc/testsuite/gnat.dg/warn30.ads
Normal file
6
gcc/testsuite/gnat.dg/warn30.ads
Normal file
@ -0,0 +1,6 @@
|
||||
with Interfaces; use type Interfaces.Integer_64;
|
||||
|
||||
package Warn30 is
|
||||
procedure Incr (X : in out Interfaces.Integer_64) with
|
||||
Post => X = X'Old + 1;
|
||||
end Warn30;
|
Loading…
Reference in New Issue
Block a user