aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2023-04-12 06:06:17 +0200
committerTristan Gingold <tgingold@free.fr>2023-04-12 06:06:17 +0200
commita8051788b6596abb1e59f605fa0bc5a5b37c1b61 (patch)
tree64917cd8d51a6cfa5173052ecafb3371b57a0bf2
parentad5da44271d6fb60fdca9948d336e0c082428da6 (diff)
downloadghdl-a8051788b6596abb1e59f605fa0bc5a5b37c1b61.tar.gz
ghdl-a8051788b6596abb1e59f605fa0bc5a5b37c1b61.tar.bz2
ghdl-a8051788b6596abb1e59f605fa0bc5a5b37c1b61.zip
translate: add elab_package_declaration
-rw-r--r--src/vhdl/translate/trans-chap2.adb7
-rw-r--r--src/vhdl/translate/trans-chap2.ads2
-rw-r--r--src/vhdl/translate/trans-chap4.adb7
3 files changed, 13 insertions, 3 deletions
diff --git a/src/vhdl/translate/trans-chap2.adb b/src/vhdl/translate/trans-chap2.adb
index 93daa205f..ac49a96da 100644
--- a/src/vhdl/translate/trans-chap2.adb
+++ b/src/vhdl/translate/trans-chap2.adb
@@ -35,6 +35,8 @@ package body Trans.Chap2 is
use Trans.Subprgs;
use Trans.Helpers;
+ procedure Elab_Package (Spec : Iir; Header : Iir);
+
type Name_String_Xlat_Array is array (Name_Id range <>) of String (1 .. 4);
-- Ortho function names are only composed of [A-Za-z0-9_]. For VHDL
@@ -1055,6 +1057,11 @@ package body Trans.Chap2 is
end if;
end Elab_Package;
+ procedure Elab_Package_Declaration (Spec : Iir) is
+ begin
+ Elab_Package (Spec, Get_Package_Header (Spec));
+ end Elab_Package_Declaration;
+
procedure Elab_Package_Body (Spec : Iir_Package_Declaration; Bod : Iir)
is
-- SPEC can be a package declaration or a package instantiation.
diff --git a/src/vhdl/translate/trans-chap2.ads b/src/vhdl/translate/trans-chap2.ads
index 9a91c74ac..a628b3133 100644
--- a/src/vhdl/translate/trans-chap2.ads
+++ b/src/vhdl/translate/trans-chap2.ads
@@ -33,7 +33,7 @@ package Trans.Chap2 is
procedure Translate_Package_Body (Bod : Iir_Package_Body);
procedure Translate_Package_Instantiation_Declaration (Inst : Iir);
- procedure Elab_Package (Spec : Iir; Header : Iir);
+ procedure Elab_Package_Declaration (Spec : Iir);
procedure Elab_Package_Body (Spec : Iir_Package_Declaration; Bod : Iir);
procedure Elab_Package_Instantiation_Declaration (Inst : Iir);
diff --git a/src/vhdl/translate/trans-chap4.adb b/src/vhdl/translate/trans-chap4.adb
index 07e3f9030..97365adc6 100644
--- a/src/vhdl/translate/trans-chap4.adb
+++ b/src/vhdl/translate/trans-chap4.adb
@@ -2832,8 +2832,11 @@ package body Trans.Chap4 is
null;
when Iir_Kind_Package_Declaration =>
- Chap2.Elab_Package (Decl, Get_Package_Header (Decl));
- -- FIXME: finalizer
+ if not Is_Uninstantiated_Package (Decl) then
+ -- Elaborate nested package (unless it is uninstantiated).
+ Chap2.Elab_Package_Declaration (Decl);
+ -- FIXME: finalizer
+ end if;
when Iir_Kind_Package_Body =>
declare
Nested_Final : Boolean;