From 9664075eef2034c4ef2af28d6aac092aa854cbf4 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Fri, 26 Aug 2016 05:22:20 +0200 Subject: Avoid crash on invalid selection of a procedure. Fixes #140 --- src/vhdl/sem_expr.adb | 10 ++++++++-- src/vhdl/sem_names.adb | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src/vhdl') diff --git a/src/vhdl/sem_expr.adb b/src/vhdl/sem_expr.adb index 4f6ec0df8..e93532fb4 100644 --- a/src/vhdl/sem_expr.adb +++ b/src/vhdl/sem_expr.adb @@ -1385,12 +1385,18 @@ package body Sem_Expr is -- Only one interpretation for the subprogram name. if Is_Func then if Get_Kind (Inter_List) /= Iir_Kind_Function_Declaration then - Error_Msg_Sem (+Expr, "name does not designate a function"); + Error_Msg_Sem (+Expr, "name does not designate a function", + Cont => True); + Error_Msg_Sem (+Expr, "name is %n defined at %l", + (+Inter_List, +Inter_List)); return Null_Iir; end if; else if Get_Kind (Inter_List) /= Iir_Kind_Procedure_Declaration then - Error_Msg_Sem (+Expr, "name does not designate a procedure"); + Error_Msg_Sem (+Expr, "name does not designate a procedure", + Cont => True); + Error_Msg_Sem (+Expr, "name is %n defined at %l", + (+Inter_List, +Inter_List)); return Null_Iir; end if; end if; diff --git a/src/vhdl/sem_names.adb b/src/vhdl/sem_names.adb index 5e1ad2cc1..6c25b812c 100644 --- a/src/vhdl/sem_names.adb +++ b/src/vhdl/sem_names.adb @@ -2053,7 +2053,8 @@ package body Sem_Names is | Iir_Kind_Subtype_Declaration | Iir_Kind_Concurrent_Procedure_Call_Statement | Iir_Kind_Component_Instantiation_Statement - | Iir_Kind_Slice_Name => + | Iir_Kind_Slice_Name + | Iir_Kind_Procedure_Call_Statement => Error_Msg_Sem (+Prefix_Loc, "%n cannot be selected by name", +Prefix); -- cgit v1.2.3