Skip to content

Commit f0ab57e

Browse files
authored
Merge pull request #6327 from feliperodri/free-assigns
No need to track write set with temporary variables
2 parents 318101f + 43f0f89 commit f0ab57e

File tree

31 files changed

+155
-171
lines changed

31 files changed

+155
-171
lines changed

regression/contracts/assigns_enforce_17/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ main.c
33
--enforce-all-contracts
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[main.assertion.\d+\] line \d+ assertion x \=\= 0\: SUCCESS$
6+
^\[main.assertion.\d+\] line \d+ assertion x \=\= 0: SUCCESS$
77
^VERIFICATION SUCCESSFUL$
88
--
99
--

regression/contracts/assigns_enforce_structs_04/test.desc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ main.c
33
--enforce-all-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[f1.\d+\] line \d+ Check that p\-\>y is assignable\: FAILURE$
7-
^\[f2.\d+\] line \d+ Check that p\-\>x is assignable\: FAILURE$
8-
^\[f3.\d+\] line \d+ Check that p\-\>y is assignable\: SUCCESS$
9-
^\[f4.\d+\] line \d+ Check that p is assignable\: FAILURE$
6+
^\[f1.\d+\] line \d+ Check that p->y is assignable: FAILURE$
7+
^\[f2.\d+\] line \d+ Check that p->x is assignable: FAILURE$
8+
^\[f3.\d+\] line \d+ Check that p->y is assignable: SUCCESS$
9+
^\[f4.\d+\] line \d+ Check that p is assignable: FAILURE$
1010
^VERIFICATION FAILED$
1111
--
1212
--

regression/contracts/assigns_enforce_structs_05/test.desc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ main.c
33
--enforce-all-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[f1.\d+\] line \d+ Check that p\-\>y is assignable\: FAILURE$
7-
^\[f1.\d+\] line \d+ Check that p\-\>x\[\(.*\)0\] is assignable\: SUCCESS$
8-
^\[f1.\d+\] line \d+ Check that p\-\>x\[\(.*\)1\] is assignable\: SUCCESS$
9-
^\[f1.\d+\] line \d+ Check that p\-\>x\[\(.*\)2\] is assignable\: SUCCESS$
6+
^\[f1.\d+\] line \d+ Check that p->y is assignable: FAILURE$
7+
^\[f1.\d+\] line \d+ Check that p->x\[\(.*\)0\] is assignable: SUCCESS$
8+
^\[f1.\d+\] line \d+ Check that p->x\[\(.*\)1\] is assignable: SUCCESS$
9+
^\[f1.\d+\] line \d+ Check that p->x\[\(.*\)2\] is assignable: SUCCESS$
1010
^VERIFICATION FAILED$
1111
--
1212
--

regression/contracts/assigns_enforce_structs_06/test.desc

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ main.c
33
--enforce-all-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[f1.\d+\] line \d+ Check that p\-\>buf\[\(.*\)0\] is assignable\: SUCCESS$
7-
^\[f1.\d+\] line \d+ Check that p\-\>buf\[\(.*\)1\] is assignable\: SUCCESS$
8-
^\[f1.\d+\] line \d+ Check that p\-\>buf\[\(.*\)2\] is assignable\: SUCCESS$
9-
^\[f1.\d+\] line \d+ Check that p\-\>size is assignable\: FAILURE$
10-
^\[f2.\d+\] line \d+ Check that p\-\>buf\[\(.*\)0\] is assignable\: FAILURE$
11-
^\[f2.\d+\] line \d+ Check that p\-\>size is assignable\: SUCCESS$
12-
^\[f3.\d+\] line \d+ Check that p\-\>buf is assignable\: SUCCESS$
13-
^\[f3.\d+\] line \d+ Check that p\-\>size is assignable\: SUCCESS$
6+
^\[f1.\d+\] line \d+ Check that p->buf\[\(.*\)0\] is assignable: SUCCESS$
7+
^\[f1.\d+\] line \d+ Check that p->buf\[\(.*\)1\] is assignable: SUCCESS$
8+
^\[f1.\d+\] line \d+ Check that p->buf\[\(.*\)2\] is assignable: SUCCESS$
9+
^\[f1.\d+\] line \d+ Check that p->size is assignable: FAILURE$
10+
^\[f2.\d+\] line \d+ Check that p->buf\[\(.*\)0\] is assignable: FAILURE$
11+
^\[f2.\d+\] line \d+ Check that p->size is assignable: SUCCESS$
12+
^\[f3.\d+\] line \d+ Check that p->buf is assignable: SUCCESS$
13+
^\[f3.\d+\] line \d+ Check that p->size is assignable: SUCCESS$
1414
^VERIFICATION FAILED$
1515
--
1616
--
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#include <assert.h>
2+
#include <stdint.h>
3+
#include <stdlib.h>
4+
5+
struct pair
6+
{
7+
uint8_t *buf;
8+
size_t size;
9+
};
10+
11+
struct pair_of_pairs
12+
{
13+
struct pair *p;
14+
};
15+
16+
void f1(struct pair *p) __CPROVER_assigns(*(p->buf))
17+
{
18+
p->buf[0] = 0;
19+
}
20+
21+
void f2(struct pair_of_pairs *pp) __CPROVER_assigns(*(pp->p->buf))
22+
{
23+
pp->p->buf[0] = 0;
24+
}
25+
26+
int main()
27+
{
28+
struct pair *p = nondet_bool() ? malloc(sizeof(*p)) : NULL;
29+
f1(p);
30+
struct pair_of_pairs *pp = malloc(sizeof(*pp));
31+
f2(pp);
32+
33+
return 0;
34+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
CORE
2+
main.c
3+
--enforce-all-contracts _ --pointer-check
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
^\[f1.\d+\] line \d+ Check that p->buf\[\(.*\)0\] is assignable: FAILURE$
7+
^\[f1.pointer\_dereference.\d+\] line \d+ dereference failure: pointer NULL in p->buf: FAILURE$
8+
^\[f2.\d+\] line \d+ Check that pp->p->buf\[\(.*\)0\] is assignable: FAILURE$
9+
^\[f2.pointer\_dereference.\d+\] line \d+ dereference failure: pointer NULL in pp->p->buf: FAILURE$
10+
^VERIFICATION FAILED$
11+
--
12+
--
13+
Checks whether CBMC properly evaluates write set of members
14+
from invalid objects. In this case, they are not writable.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#include <assert.h>
2+
#include <stdint.h>
3+
#include <stdlib.h>
4+
5+
struct pair
6+
{
7+
uint8_t *buf;
8+
size_t size;
9+
};
10+
11+
void f1(struct pair *p) __CPROVER_assigns(*(p->buf))
12+
__CPROVER_ensures(p->buf[0] == 0)
13+
{
14+
p->buf[0] = 0;
15+
}
16+
17+
int main()
18+
{
19+
struct pair *p = nondet_bool() ? malloc(sizeof(*p)) : NULL;
20+
f1(p);
21+
// clang-format off
22+
assert(p != NULL ==> p->buf[0] == 0);
23+
// clang-format on
24+
return 0;
25+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CORE
2+
main.c
3+
--replace-all-calls-with-contracts _ --pointer-check
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
^\[pointer\_dereference.\d+\] file main.c line \d+ dereference failure: pointer NULL in p->buf: FAILURE$
7+
^\[main.assertion.\d+\] line \d+ assertion p \!\= NULL \=\=> p->buf\[0\] \=\= 0: FAILURE$
8+
^VERIFICATION FAILED$
9+
--
10+
--
11+
Checks whether CBMC properly evaluates write set of members
12+
from invalid objects. In this case, they are not writable.

regression/contracts/assigns_type_checking_valid_cases/test.desc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^\[foo1.\d+\] line \d+ Check that a is assignable: SUCCESS$
7-
^\[foo10.\d+\] line \d+ Check that buffer\-\>len is assignable: SUCCESS$
8-
^\[foo10.\d+\] line \d+ Check that buffer\-\>aux\.allocated is assignable: SUCCESS$
7+
^\[foo10.\d+\] line \d+ Check that buffer->len is assignable: SUCCESS$
8+
^\[foo10.\d+\] line \d+ Check that buffer->aux\.allocated is assignable: SUCCESS$
99
^\[foo2.\d+\] line \d+ Check that b is assignable: SUCCESS$
1010
^\[foo3.\d+\] line \d+ Check that b is assignable: SUCCESS$
1111
^\[foo3.\d+\] line \d+ Check that y is assignable: SUCCESS$
@@ -14,10 +14,10 @@ main.c
1414
^\[foo4.\d+\] line \d+ Check that \*x is assignable: SUCCESS$
1515
^\[foo5.\d+\] line \d+ Check that buffer.data is assignable: SUCCESS$
1616
^\[foo5.\d+\] line \d+ Check that buffer.len is assignable: SUCCESS$
17-
^\[foo6.\d+\] line \d+ Check that \*buffer\-\>data is assignable: SUCCESS$
18-
^\[foo6.\d+\] line \d+ Check that buffer\-\>len is assignable: SUCCESS$
19-
^\[foo7.\d+\] line \d+ Check that \*buffer\-\>data is assignable: SUCCESS$
20-
^\[foo7.\d+\] line \d+ Check that buffer\-\>len is assignable: SUCCESS$
17+
^\[foo6.\d+\] line \d+ Check that \*buffer->data is assignable: SUCCESS$
18+
^\[foo6.\d+\] line \d+ Check that buffer->len is assignable: SUCCESS$
19+
^\[foo7.\d+\] line \d+ Check that \*buffer->data is assignable: SUCCESS$
20+
^\[foo7.\d+\] line \d+ Check that buffer->len is assignable: SUCCESS$
2121
^\[foo8.\d+\] line \d+ Check that array\[\(.* int\)0\] is assignable: SUCCESS$
2222
^\[foo8.\d+\] line \d+ Check that array\[\(.* int\)1\] is assignable: SUCCESS$
2323
^\[foo8.\d+\] line \d+ Check that array\[\(.* int\)2\] is assignable: SUCCESS$

regression/contracts/assigns_validity_pointer_01/test.desc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ ASSUME .*::tmp_if_expr\$\d
1616
IF ¬\(z ≠ NULL\) THEN GOTO \d
1717
ASSIGN .*::tmp_if_expr\$\d := \(\*z = 7 \? true : false\)
1818
ASSUME .*::tmp_if_expr\$\d
19-
// foo
20-
ASSUME \*.*::tmp_cc\$\d > 0
21-
ASSERT \*.*::tmp_cc\$\d = 3
2219
--
2320
\[3\] file main\.c line 6 assertion: FAILURE
2421
--

regression/contracts/assigns_validity_pointer_02/test.desc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ main.c
55
^SIGNAL=0$
66
^VERIFICATION SUCCESSFUL$
77
//^([foo\.1] line 15 assertion: FAILURE)
8-
// foo
9-
ASSUME \*.*::tmp_cc\$\d > 0
10-
ASSERT \*.*::tmp_cc\$\d = 3
118
--
129
\[foo\.1\] line 24 assertion: FAILURE
1310
\[foo\.3\] line 27 assertion: FAILURE

regression/contracts/assigns_validity_pointer_03/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ main.c
77
// bar
88
ASSERT \*x > 0
99
IF !\(\*x == 3\) THEN GOTO \d
10-
tmp_if_expr = \*y == 5 \? true \: false;
10+
tmp_if_expr = \*y == 5 \? true : false;
1111
ASSUME tmp_if_expr
1212
// baz
1313
ASSUME \*z == 7

regression/contracts/assigns_validity_pointer_04/test.desc

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ ASSIGN goto_convertt::tmp_if_expr := \(\*foo::1::y = 5 \? true : false\)
1111
ASSUME .*::tmp_if_expr
1212
// baz
1313
ASSUME \*z = 7
14-
// foo
15-
ASSUME \*.*::tmp_cc\$\d > 0
16-
ASSERT \*.*::tmp_cc\$\d = 3
1714
--
1815
--
1916
Verification:

regression/contracts/history-pointer-enforce-01/test.desc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^VERIFICATION SUCCESSFUL$
7-
ASSERT \*.*::tmp_cc\$\d = .*::tmp_cc\$\d \+ 5
87
--
98
--
109
Verification:

regression/contracts/history-pointer-enforce-02/test.desc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
^VERIFICATION FAILED$
7-
ASSERT \*.*::tmp_cc\$\d < .*::tmp_cc\$\d \+ 5
87
--
98
--
109
Verification:

regression/contracts/history-pointer-enforce-08/test.desc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^VERIFICATION SUCCESSFUL$
7-
ASSERT \*\(.*::tmp_cc\$\d\.y\) = .*::tmp_cc\$\d \+ 5
87
--
98
--
109
Verification:

regression/contracts/history-pointer-enforce-09/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^\[postcondition.\d+\] file main.c line \d+ Check ensures clause: SUCCESS$
7-
^\[foo.\d+\] line \d+ Check that p\-\>y is assignable\: SUCCESS$
7+
^\[foo.\d+\] line \d+ Check that p->y is assignable: SUCCESS$
88
^VERIFICATION SUCCESSFUL$
99
--
1010
--

regression/contracts/history-pointer-enforce-10/test.desc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ main.c
33
--enforce-all-contracts
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[postcondition.\d+\] file main.c line \d+ Check ensures clause\: SUCCESS$
7-
^\[postcondition.\d+\] file main.c line \d+ Check ensures clause\: SUCCESS$
8-
^\[postcondition.\d+\] file main.c line \d+ Check ensures clause\: SUCCESS$
9-
^\[bar.\d+\] line \d+ Check that p\-\>y is assignable\: SUCCESS$
10-
^\[baz.\d+\] line \d+ Check that p is assignable\: SUCCESS$
11-
^\[baz.\d+\] line \d+ Check that p is assignable\: SUCCESS$
12-
^\[foo.\d+\] line \d+ Check that \*p\-\>y is assignable\: SUCCESS$
13-
^\[foo.\d+\] line \d+ Check that z is assignable\: SUCCESS$
14-
^\[main.assertion.\d+\] line \d+ assertion \*\(p\-\>y\) == 7\: SUCCESS$
15-
^\[main.assertion.\d+\] line \d+ assertion \*\(p\-\>y\) == -1\: SUCCESS$
6+
^\[postcondition.\d+\] file main.c line \d+ Check ensures clause: SUCCESS$
7+
^\[postcondition.\d+\] file main.c line \d+ Check ensures clause: SUCCESS$
8+
^\[postcondition.\d+\] file main.c line \d+ Check ensures clause: SUCCESS$
9+
^\[bar.\d+\] line \d+ Check that p->y is assignable: SUCCESS$
10+
^\[baz.\d+\] line \d+ Check that p is assignable: SUCCESS$
11+
^\[baz.\d+\] line \d+ Check that p is assignable: SUCCESS$
12+
^\[foo.\d+\] line \d+ Check that \*p->y is assignable: SUCCESS$
13+
^\[foo.\d+\] line \d+ Check that z is assignable: SUCCESS$
14+
^\[main.assertion.\d+\] line \d+ assertion \*\(p->y\) == 7: SUCCESS$
15+
^\[main.assertion.\d+\] line \d+ assertion \*\(p->y\) == -1: SUCCESS$
1616
^VERIFICATION SUCCESSFUL$
1717
--
1818
--

regression/contracts/history-pointer-enforce-11/test.desc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ main.c
33
--enforce-all-contracts
44
^EXIT=0$
55
^SIGNAL=0$
6-
^\[postcondition.\d+\] Check ensures clause\: SUCCESS$
7-
^\[foo.\d+\] line \d+ Check that p\-\>y is assignable\: SUCCESS$
6+
^\[postcondition.\d+\] Check ensures clause: SUCCESS$
7+
^\[foo.\d+\] line \d+ Check that p->y is assignable: SUCCESS$
88
^VERIFICATION SUCCESSFUL$
99
--
1010
--

regression/contracts/history-pointer-replace-04/test.desc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ main.c
33
--replace-all-calls-with-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[precondition.\d+\] file main.c line \d+ Check requires clause\: SUCCESS$
7-
^\[main.assertion.\d+\] line \d+ assertion p\-\>y \!\= 7\: FAILURE$
6+
^\[precondition.\d+\] file main.c line \d+ Check requires clause: SUCCESS$
7+
^\[main.assertion.\d+\] line \d+ assertion p->y \!\= 7: FAILURE$
88
^VERIFICATION FAILED$
99
--
1010
--

regression/contracts/test_array_memory_replace/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
\[precondition.\d+\] file main.c line \d+ Check requires clause: SUCCESS
7-
\[main.assertion.\d+\] line \d+ assertion o \>\= 10 \&\& o \=\= \*n \+ 5: SUCCESS
7+
\[main.assertion.\d+\] line \d+ assertion o >\= 10 \&\& o \=\= \*n \+ 5: SUCCESS
88
\[main.assertion.\d+\] line \d+ assertion n\[9\] == 113: SUCCESS
99
^VERIFICATION SUCCESSFUL$
1010
--

regression/contracts/test_array_memory_too_small_replace/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ main.c
44
^EXIT=10$
55
^SIGNAL=0$
66
\[precondition.\d+\] file main.c line \d+ Check requires clause: FAILURE
7-
\[main.assertion.\d+\] line \d+ assertion o \>\= 10 \&\& o \=\= \*n \+ 5: SUCCESS
7+
\[main.assertion.\d+\] line \d+ assertion o >\= 10 \&\& o \=\= \*n \+ 5: SUCCESS
88
^VERIFICATION FAILED$
99
--
1010
--

regression/contracts/test_scalar_memory_replace/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ main.c
55
^SIGNAL=0$
66
\[precondition.\d+\] file main.c line \d+ Check requires clause: SUCCESS
77
\[main.assertion.\d+\] line \d+ assertion \_\_CPROVER\_r\_ok\(n, sizeof\(int\)\): SUCCESS
8-
\[main.assertion.\d+\] line \d+ assertion o \>\= 10 \&\& o \=\= \*n \+ 5: SUCCESS
8+
\[main.assertion.\d+\] line \d+ assertion o >\= 10 \&\& o \=\= \*n \+ 5: SUCCESS
99
^VERIFICATION SUCCESSFUL$
1010
--
1111
--

regression/contracts/test_struct_enforce/test.desc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
\[postcondition.\d+\] file main.c line \d+ Check ensures clause: SUCCESS
7-
\[foo.\d+\] line \d+ Check that x-\>baz is assignable: SUCCESS
8-
\[foo.\d+\] line \d+ Check that x-\>qux is assignable: SUCCESS
7+
\[foo.\d+\] line \d+ Check that x->baz is assignable: SUCCESS
8+
\[foo.\d+\] line \d+ Check that x->qux is assignable: SUCCESS
99
\[main.assertion.\d+\] line \d+ assertion rval \=\= 10: SUCCESS
1010
^VERIFICATION SUCCESSFUL$
1111
--

regression/contracts/test_struct_member_enforce/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
\[postcondition.\d+\] file main.c line \d+ Check ensures clause: SUCCESS
7-
\[foo.\d+\] line \d+ Check that x-\>str\[\(.*\)\(x-\>len - 1\)\] is assignable: SUCCESS
7+
\[foo.\d+\] line \d+ Check that x->str\[\(.*\)\(x->len - 1\)\] is assignable: SUCCESS
88
\[main.assertion.\d+\] line \d+ assertion rval \=\= 128: SUCCESS
99
^VERIFICATION SUCCESSFUL$
1010
--

regression/contracts/test_struct_replace/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
\[precondition.\d+\] file main.c line \d+ Check requires clause: SUCCESS
7-
\[main.assertion.\d+\] line \d+ assertion rval \=\= x-\>baz \+ x-\>qux: SUCCESS
7+
\[main.assertion.\d+\] line \d+ assertion rval \=\= x->baz \+ x->qux: SUCCESS
88
\[main.assertion.\d+\] line \d+ assertion \*x \=\= \*y: SUCCESS
99
^VERIFICATION SUCCESSFUL$
1010
--

regression/contracts/trivial_contract_enforce/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ main.c
33
--enforce-all-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[main.assertion.\d+\] line \d+ assertion foo\(\&n\) != 15\: FAILURE$
6+
^\[main.assertion.\d+\] line \d+ assertion foo\(\&n\) != 15: FAILURE$
77
^VERIFICATION FAILED$
88
--
99
--

regression/contracts/trivial_contract_replace/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ main.c
33
--enforce-all-contracts
44
^EXIT=10$
55
^SIGNAL=0$
6-
^\[main.assertion.\d+\] line \d+ assertion foo\(\&n\) != 15\: FAILURE$
6+
^\[main.assertion.\d+\] line \d+ assertion foo\(\&n\) != 15: FAILURE$
77
^VERIFICATION FAILED$
88
--
99
--

0 commit comments

Comments
 (0)