diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-04-20 15:47:53 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-04-20 15:47:53 +0200 |
commit | e69614ada0f86b7583c6d834e02f2835b2b58bb1 (patch) | |
tree | 4726a2529b577c6e3b6cc8e6c1c3b1c3c998f043 | |
parent | 32838704ec63978b0144b8492e2f614f2c7fa3f9 (diff) | |
download | gcc-e69614ada0f86b7583c6d834e02f2835b2b58bb1.zip gcc-e69614ada0f86b7583c6d834e02f2835b2b58bb1.tar.gz gcc-e69614ada0f86b7583c6d834e02f2835b2b58bb1.tar.bz2 |
[multiple changes]
2009-04-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Use_One_Package): In an instance, if two
potentially_use_visible and non-overloadable homonyms are available
from the actuals of distinct formal packages, retain the current one,
which was visible in the generic, to prevent spurious visibility
errors.
(End_Use_Package): Restore use_visibility when needed.
2009-04-20 Sergey Rybin <rybin@adacore.com>
* gnat_ugn.texi, vms_data.ads: Update doc.
From-SVN: r146424
-rw-r--r-- | gcc/ada/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/ada/gnat_ugn.texi | 13 | ||||
-rw-r--r-- | gcc/ada/sem_ch8.adb | 36 | ||||
-rw-r--r-- | gcc/ada/vms_data.ads | 11 |
4 files changed, 66 insertions, 7 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 13f8261..9df0311 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,16 @@ +2009-04-20 Ed Schonberg <schonberg@adacore.com> + + * sem_ch8.adb (Use_One_Package): In an instance, if two + potentially_use_visible and non-overloadable homonyms are available + from the actuals of distinct formal packages, retain the current one, + which was visible in the generic, to prevent spurious visibility + errors. + (End_Use_Package): Restore use_visibility when needed. + +2009-04-20 Sergey Rybin <rybin@adacore.com> + + * gnat_ugn.texi, vms_data.ads: Update doc. + 2009-04-20 Arnaud Charlet <charlet@adacore.com> * gcc-interface/Make-lang.in: Update dependencies diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index e9b5a66..541e6b1 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -20346,9 +20346,11 @@ Either a @file{@var{filename}} or an @file{@var{arg_list_filename}} must be supp @noindent The @command{gnatcheck} tool outputs on @file{stdout} all messages concerning rule violations. -It also creates, in the current -directory, a text file named @file{^gnatcheck.out^GNATCHECK.OUT^} that -contains the complete report of the last gnatcheck run. This report contains: +It also creates a text file that +contains the complete report of the last gnatcheck run. By default this file is +named named @file{^gnatcheck.out^GNATCHECK.OUT^} and it is located in the current +directory, @option{^-o^/OUTPUT^} option can be used to change the name and/or +location of the report file. This report contains: @itemize @bullet @item a list of the Ada source files being checked, @item a list of enabled and disabled rules, @@ -20431,6 +20433,11 @@ in the report file Verbose mode; @command{gnatcheck} generates version information and then a trace of sources being processed. + +@cindex @option{^-o ^/OUTPUT^} (@command{gnatcheck}) +@item ^-o ^/OUTPUT=^@var{report_file} +Set name of report file file to @var{report_file} . + @end table @noindent diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index ce31510..3f2ff18 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -3362,8 +3362,23 @@ package body Sem_Ch8 is if Present (Hidden_By_Use_Clause (N)) then Elmt := First_Elmt (Hidden_By_Use_Clause (N)); while Present (Elmt) loop - Set_Is_Immediately_Visible (Node (Elmt)); - Next_Elmt (Elmt); + declare + E : constant Entity_Id := Node (Elmt); + + begin + -- Reset either Use_Visibility or Direct_Visibility, depending + -- on how the entity was hidden by the use clause. + + if In_Use (Scope (E)) + and then Used_As_Generic_Actual (Scope (E)) + then + Set_Is_Potentially_Use_Visible (Node (Elmt)); + else + Set_Is_Immediately_Visible (Node (Elmt)); + end if; + + Next_Elmt (Elmt); + end; end loop; Set_Hidden_By_Use_Clause (N, No_Elist); @@ -7079,6 +7094,23 @@ package body Sem_Ch8 is or else Chars (Prev) = Name_Op_Expon) then goto Next_Usable_Entity; + + -- In an instance, two homonyms may become use_visible through the + -- actuals of distinct formal packages. In the generic, only the + -- current one would have been visible, so make the other one + -- not use_visible. + + elsif Present (Current_Instance) + and then Is_Potentially_Use_Visible (Prev) + and then not Is_Overloadable (Prev) + and then Scope (Id) /= Scope (Prev) + and then Used_As_Generic_Actual (Scope (Prev)) + and then Used_As_Generic_Actual (Scope (Id)) + and then List_Containing (Current_Use_Clause (Scope (Prev))) /= + List_Containing (Current_Use_Clause (Scope (Id))) + then + Set_Is_Potentially_Use_Visible (Prev, False); + Append_Elmt (Prev, Hidden_By_Use_Clause (N)); end if; Prev := Homonym (Prev); diff --git a/gcc/ada/vms_data.ads b/gcc/ada/vms_data.ads index 21529e0..d61a82e 100644 --- a/gcc/ada/vms_data.ads +++ b/gcc/ada/vms_data.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1996-2008, Free Software Foundation, Inc. -- +-- Copyright (C) 1996-2009, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -875,6 +875,12 @@ package VMS_Data is -- copies of the gnat1 commands spawned to obtain the chop control -- information. + S_Check_Out : aliased constant S := "/OUTPUT=@" & + "-o@"; + -- /OUTPUT=filename + -- + -- Specify the name of the output file. + Check_Switches : aliased constant Switches := (S_Check_Add 'Access, S_Check_All 'Access, @@ -890,7 +896,8 @@ package VMS_Data is S_Check_Sections 'Access, S_Check_Short 'Access, S_Check_Subdirs 'Access, - S_Check_Verb 'Access); + S_Check_Verb 'Access, + S_Check_Out 'Access); ---------------------------- -- Switches for GNAT CHOP -- |