Skip to content

Commit 278c301

Browse files
committed
precondition messages now include condition
1 parent 1cb7aa3 commit 278c301

File tree

5 files changed

+20
-6
lines changed

5 files changed

+20
-6
lines changed

regression/cprover/contracts/check_precondition1.desc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ check_precondition1.c
33

44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[main\.precondition\.1\] line \d+ precondition my_function: REFUTED$
7-
^\[main\.precondition\.2\] line \d+ precondition my_function: SUCCESS$
6+
^\[main\.precondition\.1\] line \d+ my_function precondition .*: REFUTED$
7+
^\[main\.precondition\.2\] line \d+ my_function precondition .*: SUCCESS$
88
--

regression/cprover/contracts/check_precondition2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ check_precondition2.c
33

44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[caller\.precondition\.1\] line \d+ precondition callee: SUCCESS$
6+
^\[caller\.precondition\.1\] line \d+ callee precondition parameter >= 10: SUCCESS$
77
--

regression/cprover/contracts/nested1.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ nested1.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^\[caller\.assertion\.1\] line \d+ property 1: SUCCESS$
7-
^\[caller\.precondition\.1\] line \d+ precondition callee: SUCCESS$
7+
^\[caller\.precondition\.1\] line \d+ callee precondition .*: SUCCESS$
88
--

regression/cprover/contracts/recursive_function1.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ recursive_function1.c
33

44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[recursive_function\.precondition\.1] line \d+ precondition recursive_function: SUCCESS$
6+
^\[recursive_function\.precondition\.1] line \d+ recursive_function precondition.*: SUCCESS$
77
--

src/cprover/instrument_contracts.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,21 @@ Author: Daniel Kroening, [email protected]
1919

2020
#include <goto-programs/goto_model.h>
2121

22+
#include <ansi-c/expr2c.h>
23+
2224
#include <iostream>
2325

26+
#define MAX_TEXT 20
27+
28+
static std::string expr2text(const exprt &src, const namespacet &ns)
29+
{
30+
auto text = expr2c(src, ns);
31+
if(text.size() >= MAX_TEXT)
32+
return std::string(text, 0, MAX_TEXT - 3) + "...";
33+
else
34+
return text;
35+
}
36+
2437
static exprt make_address(exprt src)
2538
{
2639
if(src.id() == ID_dereference)
@@ -328,7 +341,8 @@ void replace_function_calls_by_contracts(
328341
auto location = it->source_location();
329342
location.set_property_class(ID_precondition);
330343
location.set_comment(
331-
"precondition " + id2string(symbol.display_name()));
344+
id2string(symbol.display_name()) + " precondition " +
345+
expr2text(precondition, ns));
332346

333347
auto replaced_precondition = precondition;
334348
replace_symbol(replaced_precondition);

0 commit comments

Comments
 (0)