diff options
author | Tristan Gingold <tgingold@free.fr> | 2016-09-04 07:11:38 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2016-09-04 07:24:30 +0200 |
commit | d99f387f2391531eeba31a0cd143a39a2b6cd011 (patch) | |
tree | 281e98bfa8af73fef1f32bc79af9811031bbdbe5 /src/vhdl/translate | |
parent | c553937361b0b9f20b0445b75a296559911a3e53 (diff) | |
download | ghdl-d99f387f2391531eeba31a0cd143a39a2b6cd011.tar.gz ghdl-d99f387f2391531eeba31a0cd143a39a2b6cd011.tar.bz2 ghdl-d99f387f2391531eeba31a0cd143a39a2b6cd011.zip |
vhdl08: preliminary work to support nested package bodies.
Diffstat (limited to 'src/vhdl/translate')
-rw-r--r-- | src/vhdl/translate/trans-chap2.adb | 9 | ||||
-rw-r--r-- | src/vhdl/translate/trans-chap4.adb | 3 | ||||
-rw-r--r-- | src/vhdl/translate/trans-rtis.adb | 11 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/vhdl/translate/trans-chap2.adb b/src/vhdl/translate/trans-chap2.adb index d5837d304..1273760fa 100644 --- a/src/vhdl/translate/trans-chap2.adb +++ b/src/vhdl/translate/trans-chap2.adb @@ -865,8 +865,9 @@ package body Trans.Chap2 is procedure Translate_Package_Body (Bod : Iir_Package_Body) is - Spec : constant Iir_Package_Declaration := Get_Package (Bod); - Info : constant Ortho_Info_Acc := Get_Info (Spec); + Is_Nested : constant Boolean := Is_Nested_Package (Bod); + Spec : constant Iir_Package_Declaration := Get_Package (Bod); + Info : constant Ortho_Info_Acc := Get_Info (Spec); Prev_Subprg_Instance : Subprgs.Subprg_Instance_Stack; Prev_Storage : constant O_Storage := Global_Storage; begin @@ -916,7 +917,9 @@ package body Trans.Chap2 is Subprgs.Pop_Subprg_Instance (Wki_Instance, Prev_Subprg_Instance); end if; - Elab_Package_Body (Spec, Bod); + if not Is_Nested then + Elab_Package_Body (Spec, Bod); + end if; Global_Storage := Prev_Storage; end Translate_Package_Body; diff --git a/src/vhdl/translate/trans-chap4.adb b/src/vhdl/translate/trans-chap4.adb index 0f78919a3..3e7f18b75 100644 --- a/src/vhdl/translate/trans-chap4.adb +++ b/src/vhdl/translate/trans-chap4.adb @@ -2453,7 +2453,8 @@ package body Trans.Chap4 is | Iir_Kind_Group_Declaration => null; - when Iir_Kind_Package_Declaration => + when Iir_Kind_Package_Declaration + | Iir_Kind_Package_Body => declare Nested_Final : Boolean; begin diff --git a/src/vhdl/translate/trans-rtis.adb b/src/vhdl/translate/trans-rtis.adb index da69bd9b3..8c06460aa 100644 --- a/src/vhdl/translate/trans-rtis.adb +++ b/src/vhdl/translate/trans-rtis.adb @@ -2298,6 +2298,17 @@ package body Trans.Rtis is Generate_Block (Decl, Parent_Rti); Pop_Identifier_Prefix (Mark); end; + when Iir_Kind_Package_Body => + declare + Mark : Id_Mark_Type; + Mark1 : Id_Mark_Type; + begin + Push_Identifier_Prefix (Mark, Get_Identifier (Decl)); + Push_Identifier_Prefix (Mark1, "BODY"); + Generate_Block (Decl, Parent_Rti); + Pop_Identifier_Prefix (Mark1); + Pop_Identifier_Prefix (Mark); + end; when others => Error_Kind ("rti.generate_declaration_chain", Decl); |