tests: split unsafe.v to vlib/v/tests/unsafe_test.v and a checker output .vv&.out test

pull/5892/head
Delyan Angelov 2020-07-20 16:53:27 +03:00
parent 60997b3052
commit fb4c3ff31a
4 changed files with 65 additions and 34 deletions

View File

@ -0,0 +1,34 @@
vlib/v/checker/tests/pointer_arithmetic_should_be_checked.v:4:6: error: pointer arithmetic is only allowed in `unsafe` blocks
2 | v := 5
3 | mut p := &v
4 | p++
| ~~
5 | p += 2
6 | _ := v
vlib/v/checker/tests/pointer_arithmetic_should_be_checked.v:5:7: error: pointer arithmetic is only allowed in `unsafe` blocks
3 | mut p := &v
4 | p++
5 | p += 2
| ~~
6 | _ := v
7 | }
vlib/v/checker/tests/pointer_arithmetic_should_be_checked.v:11:14: error: pointer arithmetic is only allowed in `unsafe` blocks
9 | fn test_ptr_infix() {
10 | v := 4
11 | mut q := &v - 1
| ^
12 | q = q + 3
13 | _ := q
vlib/v/checker/tests/pointer_arithmetic_should_be_checked.v:12:9: error: pointer arithmetic is only allowed in `unsafe` blocks
10 | v := 4
11 | mut q := &v - 1
12 | q = q + 3
| ^
13 | _ := q
14 | _ := v
vlib/v/checker/tests/pointer_arithmetic_should_be_checked.v:24:7: error: method `S1.f` must be called from an `unsafe` block
22 | fn test_funcs() {
23 | s := S1{}
24 | s.f()
| ~~~
25 | }

View File

@ -1,34 +0,0 @@
unsafe.v:4:6: warning: pointer arithmetic is only allowed in `unsafe` blocks
2 | v := 5
3 | mut p := &v
4 | p++
| ~~
5 | p += 2
6 | _ := v
unsafe.v:5:7: warning: pointer arithmetic is only allowed in `unsafe` blocks
3 | mut p := &v
4 | p++
5 | p += 2
| ~~
6 | _ := v
7 | }
unsafe.v:11:14: warning: pointer arithmetic is only allowed in `unsafe` blocks
9 | fn test_ptr_infix() {
10 | v := 4
11 | mut q := &v - 1
| ^
12 | q = q + 3
13 | _ := q
unsafe.v:12:9: warning: pointer arithmetic is only allowed in `unsafe` blocks
10 | v := 4
11 | mut q := &v - 1
12 | q = q + 3
| ^
13 | _ := q
14 | _ := v
unsafe.v:24:7: warning: method `S1.f` must be called from an `unsafe` block
22 | fn test_funcs() {
23 | s := S1{}
24 | s.f()
| ~~~
25 | }

View File

@ -0,0 +1,31 @@
fn test_ptr_assign() {
v := [int(5), 6, 77, 1]
mut p := &v[0]
unsafe { (*p)++ }
unsafe { p++ } // p now points to v[1]
unsafe { (*p) += 2 }
unsafe { p += 2 } // p now points to v[3]
unsafe { *p = 31 }
assert v[0] == 6
assert v[1] == 8
assert v[2] == 77
assert v[3] == 31
}
fn test_ptr_infix() {
v := 4
mut q := unsafe{ &v - 1 }
q = unsafe {q + 3}
_ := q
_ := v
}
struct S1 {}
[unsafe_fn]
fn (s S1) f(){}
fn test_funcs() {
s := S1{}
unsafe { s.f() }
}