add test case

This commit is contained in:
Ralf Jung 2018-07-15 13:55:17 +02:00
parent 8a17b36fc5
commit 5be74148c2
2 changed files with 42 additions and 0 deletions

View 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,
}
}];
}

View 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`.