aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2016-09-30 20:28:56 +0200
committerTristan Gingold <tgingold@free.fr>2016-09-30 20:28:56 +0200
commit3736fa2cb834ae847e04a5e8ec424e323a76360d (patch)
tree7bea834281e489a7bb4e17ad95fa4dcdeb6a176b /src/vhdl
parentc2c629ee080e5b7e45b35452c18658bc4ac36471 (diff)
downloadghdl-3736fa2cb834ae847e04a5e8ec424e323a76360d.tar.gz
ghdl-3736fa2cb834ae847e04a5e8ec424e323a76360d.tar.bz2
ghdl-3736fa2cb834ae847e04a5e8ec424e323a76360d.zip
sem_inst: handl subprogram association.
Diffstat (limited to 'src/vhdl')
-rw-r--r--src/vhdl/sem_inst.adb16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/vhdl/sem_inst.adb b/src/vhdl/sem_inst.adb
index df3a9781e..0b0b76467 100644
--- a/src/vhdl/sem_inst.adb
+++ b/src/vhdl/sem_inst.adb
@@ -518,6 +518,8 @@ package body Sem_Inst is
Set_Has_Identifier_List (Res, Get_Has_Identifier_List (Inter));
Set_Expr_Staticness (Res, Get_Expr_Staticness (Inter));
Set_Name_Staticness (Res, Get_Name_Staticness (Inter));
+ Set_Default_Value (Res, Get_Default_Value (Inter));
+ Set_Is_Ref (Res, True);
when Iir_Kind_Interface_Package_Declaration =>
Set_Uninstantiated_Package_Name
(Res, Get_Uninstantiated_Package_Name (Inter));
@@ -847,11 +849,19 @@ package body Sem_Inst is
Imp_Assoc := Get_Chain (Imp_Assoc);
end loop;
end;
- when Iir_Kind_Association_Element_Package =>
+
+ when Iir_Kind_Association_Element_Subprogram =>
+ Inter := Get_Association_Interface (Inst_El, Inter_El);
+ Set_Instance (Get_Origin (Inter),
+ Get_Named_Entity (Get_Actual (Inst_El)));
+
+ when Iir_Kind_Association_Element_By_Expression
+ | Iir_Kind_Association_Element_By_Individual
+ | Iir_Kind_Association_Element_Open =>
+ null;
+ when others =>
-- TODO.
raise Internal_Error;
- when others =>
- null;
end case;
Next_Association_Interface (Inst_El, Inter_El);
end loop;