tests: split unsafe.v to vlib/v/tests/unsafe_test.v and a checker output .vv&.out test
							parent
							
								
									60997b3052
								
							
						
					
					
						commit
						fb4c3ff31a
					
				|  | @ -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 | } | ||||||
|  | @ -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 | } |  | ||||||
|  | @ -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() } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue