From 6714b56ddc9c5011bf404102e57c702e003a561b Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Thu, 11 May 2017 06:32:48 +0200 Subject: vhdl2008: allow nested packages in uninstantiated package For #317 --- src/vhdl/translate/trans-chap2.adb | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/vhdl/translate/trans-chap2.adb') diff --git a/src/vhdl/translate/trans-chap2.adb b/src/vhdl/translate/trans-chap2.adb index 4b9d1b560..8b73c0e39 100644 --- a/src/vhdl/translate/trans-chap2.adb +++ b/src/vhdl/translate/trans-chap2.adb @@ -807,7 +807,8 @@ package body Trans.Chap2 is Info.Package_Body_Scope'Access); end if; - -- Each subprogram has a body instance argument. + -- Each subprogram has a body instance argument (because subprogram + -- bodys can access to body declarations). Subprgs.Push_Subprg_Instance (Info.Package_Body_Scope'Access, Info.Package_Body_Ptr_Type, Wki_Instance, Prev_Subprg_Instance); @@ -1239,6 +1240,31 @@ package body Trans.Chap2 is Package_Instance_Spec_Scope => Src.Package_Instance_Spec_Scope, Package_Instance_Body_Scope => Src.Package_Instance_Body_Scope); + when Kind_Field => + Dest.all := (Kind => Kind_Field, + Field_Node => Src.Field_Node, + Field_Bound => Src.Field_Bound); + + when Kind_Package => + Dest.all := + (Kind => Kind_Package, + Package_Elab_Spec_Subprg => Src.Package_Elab_Spec_Subprg, + Package_Elab_Body_Subprg => Src.Package_Elab_Body_Subprg, + Package_Elab_Spec_Instance => + Instantiate_Subprg_Instance (Src.Package_Elab_Spec_Instance), + Package_Elab_Body_Instance => + Instantiate_Subprg_Instance (Src.Package_Elab_Body_Instance), + Package_Elab_Var => Instantiate_Var (Src.Package_Elab_Var), + Package_Rti_Const => Src.Package_Rti_Const, + Package_Spec_Scope => + Instantiate_Var_Scope (Src.Package_Spec_Scope), + Package_Spec_Ptr_Type => Src.Package_Spec_Ptr_Type, + Package_Body_Scope => + Instantiate_Var_Scope (Src.Package_Body_Scope), + Package_Body_Ptr_Type => Src.Package_Body_Ptr_Type, + Package_Spec_Field => Src.Package_Spec_Field, + Package_Local_Id => Src.Package_Local_Id); + when others => raise Internal_Error; end case; -- cgit v1.2.3