diff options
author | Tristan Gingold <tgingold@free.fr> | 2020-04-16 19:46:24 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2020-04-16 20:40:20 +0200 |
commit | c35ee25d5465d5c3f542c5d2e4b1e490661c577e (patch) | |
tree | 4778223972a7136603d4981d1d9028729324f9d1 | |
parent | f69969f8bf8e6609979893e52cc508b7a29568db (diff) | |
download | ghdl-c35ee25d5465d5c3f542c5d2e4b1e490661c577e.tar.gz ghdl-c35ee25d5465d5c3f542c5d2e4b1e490661c577e.tar.bz2 ghdl-c35ee25d5465d5c3f542c5d2e4b1e490661c577e.zip |
synth-stmts: print report message on assertion failure. Fix #1231
-rw-r--r-- | src/synth/synth-stmts.adb | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb index d9b81188d..c1bf01919 100644 --- a/src/synth/synth-stmts.adb +++ b/src/synth/synth-stmts.adb @@ -2755,6 +2755,25 @@ package body Synth.Stmts is return Synth_Subprogram_Call (Syn_Inst, Expr); end Synth_User_Function_Call; + procedure Synth_Failed_Assertion + (Syn_Inst : Synth_Instance_Acc; Stmt : Node) + is + Msg : constant Node := Get_Report_Expression (Stmt); + Str : Valtyp; + begin + if Msg /= Null_Node then + Str := Synth_Expression_With_Basetype (Syn_Inst, Msg); + else + Str := No_Valtyp; + end if; + if Str /= No_Valtyp and then Is_Static (Str.Val) then + Error_Msg_Synth + (+Stmt, "assertion failure: " & Value_To_String (Str)); + else + Error_Msg_Synth (+Stmt, "assertion failure"); + end if; + end Synth_Failed_Assertion; + procedure Synth_Concurrent_Assertion_Statement (Syn_Inst : Synth_Instance_Acc; Stmt : Node) is @@ -2769,7 +2788,7 @@ package body Synth.Stmts is end if; if Is_Static (Val.Val) then if Read_Discrete (Val) /= 1 then - Error_Msg_Synth (+Stmt, "assertion failure"); + Synth_Failed_Assertion (Syn_Inst, Stmt); end if; return; end if; |