Skip to content

Commit 79e7795

Browse files
authored
Add proof annotation for smack harnesses (rust-lang#1939)
A bunch of the harnesses from the smack testsuite were missing kani::proof annotation. They have the kani-verify-fail tag on them, and because of rust-lang#1910, they would fail but with a different error than expected. Add #[kani::proof] to them.
1 parent 7299745 commit 79e7795

24 files changed

+24
-0
lines changed

tests/smack/basic/add.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// @expect error
44
// kani-verify-fail
55

6+
#[kani::proof]
67
pub fn main() {
78
let a = 2;
89
let b = 3;

tests/smack/basic/arith_assume3.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// @expect error
44
// kani-verify-fail
55

6+
#[kani::proof]
67
pub fn main() {
78
let a = kani::any();
89
let b = kani::any();

tests/smack/basic/div.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// @expect error
44
// kani-verify-fail
55

6+
#[kani::proof]
67
pub fn main() {
78
let a = 2;
89
let b = 3;

tests/smack/basic/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// @expect error
44
// kani-verify-fail
55

6+
#[kani::proof]
67
pub fn main() {
78
let a = 2;
89
let b = 3;

tests/smack/basic/mul.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// @expect error
44
// kani-verify-fail
55

6+
#[kani::proof]
67
pub fn main() {
78
let a = 2;
89
let b = 3;

tests/smack/basic/sub.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// @expect error
44
// kani-verify-fail
55

6+
#[kani::proof]
67
pub fn main() {
78
let a = 2;
89
let b = 3;

tests/smack/functions/closure_fail.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ where
1111
some_closure(1);
1212
}
1313

14+
#[kani::proof]
1415
pub fn main() {
1516
let mut num: i32 = kani::any();
1617
if num <= std::i32::MAX - 10 {

tests/smack/functions/double_fail.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ fn double(a: u32) -> u32 {
77
a * 2
88
}
99

10+
#[kani::proof]
1011
pub fn main() {
1112
let a = kani::any();
1213
if a <= std::u32::MAX / 2 {

tests/smack/generics/generic_function1.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ fn swapem<T, U: S<T>>(s: U) -> U {
3434
s.swap_items()
3535
}
3636

37+
#[kani::proof]
3738
pub fn main() {
3839
let x2 = kani::any();
3940
let y2 = kani::any();

tests/smack/generics/generic_function2.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ fn swapem<T, U: S<T>>(s: U) -> U {
3434
s.swap_items()
3535
}
3636

37+
#[kani::proof]
3738
pub fn main() {
3839
let x2 = kani::any();
3940
let y2 = kani::any();

tests/smack/generics/generic_function3.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ fn swapem<T, U: S<T>>(s: U) -> U {
3434
s.swap_items()
3535
}
3636

37+
#[kani::proof]
3738
pub fn main() {
3839
let x2 = kani::any();
3940
let y2 = kani::any();

tests/smack/generics/generic_function4.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ fn swapem<T, U: S<T>>(s: U) -> U {
3434
s.swap_items()
3535
}
3636

37+
#[kani::proof]
3738
pub fn main() {
3839
let x2 = kani::any();
3940
let y2 = kani::any();

tests/smack/generics/generic_function5.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ fn swapem<T, U: S<T>>(s: U) -> U {
3434
s.swap_items()
3535
}
3636

37+
#[kani::proof]
3738
pub fn main() {
3839
let x2 = kani::any();
3940
let y2 = kani::any();

tests/smack/overflow/add_overflow.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ pub fn get128() -> u8 {
88
128
99
}
1010

11+
#[kani::proof]
1112
pub fn main() {
1213
let a: u8 = get128();
1314
let b: u8 = get128();

tests/smack/overflow/mul_overflow.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ fn get128() -> u8 {
88
128
99
}
1010

11+
#[kani::proof]
1112
pub fn main() {
1213
let a: u8 = get128();
1314
let b: u8 = 2;

tests/smack/overflow/sub_overflow.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ fn get128() -> u8 {
88
128
99
}
1010

11+
#[kani::proof]
1112
pub fn main() {
1213
let a: u8 = get128();
1314
let b: u8 = 129;

tests/smack/recursion/fac_fail.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ fn fac(n: u64, acc: u64) -> u64 {
1111
}
1212
}
1313

14+
#[kani::proof]
1415
pub fn main() {
1516
let x = fac(5, 1);
1617
assert!(x != 120);

tests/smack/recursion/fib_fail.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ fn fib(x: u64) -> u64 {
1212
}
1313
}
1414

15+
#[kani::proof]
1516
pub fn main() {
1617
let x = fib(6);
1718
assert!(x != 8);

tests/smack/structures/option_fail.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ fn safe_div(x: u32, y: u32) -> Option<u32> {
77
if y != 0 { Some(x / y) } else { None }
88
}
99

10+
#[kani::proof]
1011
pub fn main() {
1112
let x = kani::any();
1213
if x > 0 && x <= 100 {

tests/smack/structures/point_fail.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ impl AddAssign for Point {
3737
}
3838
}
3939

40+
#[kani::proof]
4041
pub fn main() {
4142
let w = kani::any();
4243
let x = kani::any();

tests/smack/vector/vec11.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// @expect error
55
// kani-verify-fail
66

7+
#[kani::proof]
78
pub fn main() {
89
let mut v: Vec<u64> = Vec::new();
910
v.push(0);

tests/smack/vector/vec12.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// @expect error
55
// kani-verify-fail
66

7+
#[kani::proof]
78
pub fn main() {
89
let mut v: Vec<u64> = Vec::new();
910
v.push(0);

tests/smack/vector/vec13.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// @expect error
55
// kani-verify-fail
66

7+
#[kani::proof]
78
pub fn main() {
89
let mut v: Vec<u64> = Vec::new();
910
v.push(0);

tests/smack/vector/vec_resize_fail.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// @expect error
55
// kani-verify-fail
66

7+
#[kani::proof]
78
pub fn main() {
89
let mut v1: Vec<u64> = vec![0];
910
let mut v2: Vec<u64> = vec![3];

0 commit comments

Comments
 (0)