diff options
author | bosch <bosch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-03 19:21:33 +0000 |
---|---|---|
committer | bosch <bosch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-03 19:21:33 +0000 |
commit | 5edbb398f6685dd578292a0529bc1763d420a173 (patch) | |
tree | 6e9f6c7b7364bbc29a8601292577541921ec75e7 /gcc/ada/sem_ch12.adb | |
parent | 684359128e4da5eefe42173ee6909fcf2bca36a7 (diff) | |
download | gcc-5edbb398f6685dd578292a0529bc1763d420a173.tar.gz |
2001-12-03 Ed Schonberg <schonber@gnat.com>
* sem_ch12.adb (Inline_Instance_Body): Use Save_Scope_Stack and
push Standard on the stack before analyzing the instance body,
in order to have a clean visibility environment.
* sem_ch12.adb (Inline_Instance_Body): Remove redundant code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47559 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_ch12.adb')
-rw-r--r-- | gcc/ada/sem_ch12.adb | 39 |
1 files changed, 10 insertions, 29 deletions
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb index 811644d2d3c..b7c880422a2 100644 --- a/gcc/ada/sem_ch12.adb +++ b/gcc/ada/sem_ch12.adb @@ -2728,6 +2728,11 @@ package body Sem_Ch12 is then Removed := True; + -- Remove entities in current scopes from visibility, so + -- than instance body is compiled in a clean environment. + + Save_Scope_Stack; + if Is_Child_Unit (S) then -- Remove child unit from stack, as well as inner scopes. -- Removing the context of a child unit removes parent @@ -2755,8 +2760,11 @@ package body Sem_Ch12 is S := Scope (S); end loop; + New_Scope (Standard_Standard); Instantiate_Package_Body ((N, Act_Decl, Expander_Active, Current_Sem_Unit)); + Pop_Scope; + -- Restore context. @@ -2771,37 +2779,8 @@ package body Sem_Ch12 is end loop; if Removed then - -- Make local entities not visible, so that when the context of - -- unit is restored, there are not spurious hidings of use- - -- visible entities (which appear in the environment before the - -- current scope). - - if Current_Scope /= Standard_Standard then - S := First_Entity (Current_Scope); - - while Present (S) loop - if Is_Overloadable (S) then - Set_Is_Immediately_Visible (S, False); - end if; - - Next_Entity (S); - end loop; - end if; - Install_Context (Curr_Comp); - if Current_Scope /= Standard_Standard then - S := First_Entity (Current_Scope); - - while Present (S) loop - if Is_Overloadable (S) then - Set_Is_Immediately_Visible (S); - end if; - - Next_Entity (S); - end loop; - end if; - if Present (Curr_Scope) and then Is_Child_Unit (Curr_Scope) then @@ -2814,6 +2793,8 @@ package body Sem_Ch12 is New_Scope (Inner_Scopes (J)); end loop; end if; + + Restore_Scope_Stack; end if; for J in reverse 1 .. Num_Scopes loop |