add test case
This commit is contained in:
parent
8a17b36fc5
commit
5be74148c2
12
src/test/ui/const-eval/match-test-ptr-null.rs
Normal file
12
src/test/ui/const-eval/match-test-ptr-null.rs
Normal file
@ -0,0 +1,12 @@
|
||||
fn main() {
|
||||
// Make sure match uses the usual pointer comparison code path -- i.e., it should complain
|
||||
// that pointer comparison is disallowed, not that parts of a pointer are accessed as raw
|
||||
// bytes.
|
||||
let _: [u8; 0] = [4; { //~ ERROR could not evaluate repeat length
|
||||
match &1 as *const i32 as usize { //~ ERROR raw pointers cannot be cast to integers
|
||||
0 => 42, //~ ERROR constant contains unimplemented expression type
|
||||
//~^ NOTE "pointer arithmetic or comparison" needs an rfc before being allowed
|
||||
n => n,
|
||||
}
|
||||
}];
|
||||
}
|
30
src/test/ui/const-eval/match-test-ptr-null.stderr
Normal file
30
src/test/ui/const-eval/match-test-ptr-null.stderr
Normal file
@ -0,0 +1,30 @@
|
||||
error[E0018]: raw pointers cannot be cast to integers in constants
|
||||
--> $DIR/match-test-ptr-null.rs:6:15
|
||||
|
|
||||
LL | match &1 as *const i32 as usize { //~ ERROR raw pointers cannot be cast to integers
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0019]: constant contains unimplemented expression type
|
||||
--> $DIR/match-test-ptr-null.rs:7:13
|
||||
|
|
||||
LL | 0 => 42, //~ ERROR constant contains unimplemented expression type
|
||||
| ^
|
||||
|
||||
error[E0080]: could not evaluate repeat length
|
||||
--> $DIR/match-test-ptr-null.rs:5:26
|
||||
|
|
||||
LL | let _: [u8; 0] = [4; { //~ ERROR could not evaluate repeat length
|
||||
| __________________________^
|
||||
LL | | match &1 as *const i32 as usize { //~ ERROR raw pointers cannot be cast to integers
|
||||
LL | | 0 => 42, //~ ERROR constant contains unimplemented expression type
|
||||
| | - "pointer arithmetic or comparison" needs an rfc before being allowed inside constants
|
||||
LL | | //~^ NOTE "pointer arithmetic or comparison" needs an rfc before being allowed
|
||||
LL | | n => n,
|
||||
LL | | }
|
||||
LL | | }];
|
||||
| |_____^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors occurred: E0018, E0019, E0080.
|
||||
For more information about an error, try `rustc --explain E0018`.
|
Loading…
Reference in New Issue
Block a user