aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2020-04-16 19:46:24 +0200
committerTristan Gingold <tgingold@free.fr>2020-04-16 20:40:20 +0200
commitc35ee25d5465d5c3f542c5d2e4b1e490661c577e (patch)
tree4778223972a7136603d4981d1d9028729324f9d1
parentf69969f8bf8e6609979893e52cc508b7a29568db (diff)
downloadghdl-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.adb21
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;