Add E0606
This commit is contained in:
parent
0e4b8ffccd
commit
30effc14e4
4 changed files with 83 additions and 64 deletions
13
src/test/compile-fail/E0606.rs
Normal file
13
src/test/compile-fail/E0606.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
fn main() {
|
||||
&0u8 as u8; //~ ERROR E0606
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
error: casting `*const U` as `*const V` is invalid
|
||||
error[E0606]: casting `*const U` as `*const V` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:13:5
|
||||
|
|
||||
13 | u as *const V
|
||||
|
|
@ -6,7 +6,7 @@ error: casting `*const U` as `*const V` is invalid
|
|||
|
|
||||
= note: vtable kinds may not match
|
||||
|
||||
error: casting `*const U` as `*const str` is invalid
|
||||
error[E0606]: casting `*const U` as `*const str` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:18:5
|
||||
|
|
||||
18 | u as *const str
|
||||
|
|
@ -60,19 +60,19 @@ error[E0605]: non-scalar cast: `std::option::Option<&*const u8>` as `*const u8`
|
|||
|
|
||||
= note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait
|
||||
|
||||
error: casting `*const u8` as `f32` is invalid
|
||||
error[E0606]: casting `*const u8` as `f32` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:45:13
|
||||
|
|
||||
45 | let _ = v as f32;
|
||||
| ^^^^^^^^
|
||||
|
||||
error: casting `fn() {main}` as `f64` is invalid
|
||||
error[E0606]: casting `fn() {main}` as `f64` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:46:13
|
||||
|
|
||||
46 | let _ = main as f64;
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
error: casting `&*const u8` as `usize` is invalid
|
||||
error[E0606]: casting `&*const u8` as `usize` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:47:13
|
||||
|
|
||||
47 | let _ = &v as usize;
|
||||
|
|
@ -80,7 +80,7 @@ error: casting `&*const u8` as `usize` is invalid
|
|||
|
|
||||
= help: cast through a raw pointer first
|
||||
|
||||
error: casting `f32` as `*const u8` is invalid
|
||||
error[E0606]: casting `f32` as `*const u8` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:48:13
|
||||
|
|
||||
48 | let _ = f as *const u8;
|
||||
|
|
@ -108,7 +108,7 @@ error[E0604]: only `u8` can be cast as `char`, not `u32`
|
|||
51 | let _ = 0x61u32 as char;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `bool` as `f32` is invalid
|
||||
error[E0606]: casting `bool` as `f32` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:53:13
|
||||
|
|
||||
53 | let _ = false as f32;
|
||||
|
|
@ -116,7 +116,7 @@ error: casting `bool` as `f32` is invalid
|
|||
|
|
||||
= help: cast through an integer first
|
||||
|
||||
error: casting `E` as `f32` is invalid
|
||||
error[E0606]: casting `E` as `f32` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:54:13
|
||||
|
|
||||
54 | let _ = E::A as f32;
|
||||
|
|
@ -124,7 +124,7 @@ error: casting `E` as `f32` is invalid
|
|||
|
|
||||
= help: cast through an integer first
|
||||
|
||||
error: casting `char` as `f32` is invalid
|
||||
error[E0606]: casting `char` as `f32` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:55:13
|
||||
|
|
||||
55 | let _ = 'a' as f32;
|
||||
|
|
@ -132,25 +132,25 @@ error: casting `char` as `f32` is invalid
|
|||
|
|
||||
= help: cast through an integer first
|
||||
|
||||
error: casting `bool` as `*const u8` is invalid
|
||||
error[E0606]: casting `bool` as `*const u8` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:57:13
|
||||
|
|
||||
57 | let _ = false as *const u8;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `E` as `*const u8` is invalid
|
||||
error[E0606]: casting `E` as `*const u8` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:58:13
|
||||
|
|
||||
58 | let _ = E::A as *const u8;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `char` as `*const u8` is invalid
|
||||
error[E0606]: casting `char` as `*const u8` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:59:13
|
||||
|
|
||||
59 | let _ = 'a' as *const u8;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `usize` as `*const [u8]` is invalid
|
||||
error[E0606]: casting `usize` as `*const [u8]` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:61:13
|
||||
|
|
||||
61 | let _ = 42usize as *const [u8];
|
||||
|
|
@ -162,37 +162,37 @@ error: cannot cast thin pointer `*const u8` to fat pointer `*const [u8]`
|
|||
62 | let _ = v as *const [u8];
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `&Foo` as `*const str` is invalid
|
||||
error[E0606]: casting `&Foo` as `*const str` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:64:13
|
||||
|
|
||||
64 | let _ = foo as *const str;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `&Foo` as `*mut str` is invalid
|
||||
error[E0606]: casting `&Foo` as `*mut str` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:65:13
|
||||
|
|
||||
65 | let _ = foo as *mut str;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `fn() {main}` as `*mut str` is invalid
|
||||
error[E0606]: casting `fn() {main}` as `*mut str` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:66:13
|
||||
|
|
||||
66 | let _ = main as *mut str;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `&f32` as `*mut f32` is invalid
|
||||
error[E0606]: casting `&f32` as `*mut f32` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:67:13
|
||||
|
|
||||
67 | let _ = &f as *mut f32;
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `&f32` as `*const f64` is invalid
|
||||
error[E0606]: casting `&f32` as `*const f64` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:68:13
|
||||
|
|
||||
68 | let _ = &f as *const f64;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: casting `*const [i8]` as `usize` is invalid
|
||||
error[E0606]: casting `*const [i8]` as `usize` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:69:13
|
||||
|
|
||||
69 | let _ = fat_sv as usize;
|
||||
|
|
@ -200,7 +200,7 @@ error: casting `*const [i8]` as `usize` is invalid
|
|||
|
|
||||
= help: cast through a thin pointer first
|
||||
|
||||
error: casting `*const Foo` as `*const [u16]` is invalid
|
||||
error[E0606]: casting `*const Foo` as `*const [u16]` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:78:13
|
||||
|
|
||||
78 | let _ = cf as *const [u16];
|
||||
|
|
@ -208,7 +208,7 @@ error: casting `*const Foo` as `*const [u16]` is invalid
|
|||
|
|
||||
= note: vtable kinds may not match
|
||||
|
||||
error: casting `*const Foo` as `*const Bar` is invalid
|
||||
error[E0606]: casting `*const Foo` as `*const Bar` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:79:13
|
||||
|
|
||||
79 | let _ = cf as *const Bar;
|
||||
|
|
@ -234,7 +234,7 @@ error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
|||
= help: the trait `std::marker::Sized` is not implemented for `str`
|
||||
= note: required for the cast to the object type `Foo`
|
||||
|
||||
error: casting `&{float}` as `f32` is invalid
|
||||
error[E0606]: casting `&{float}` as `f32` is invalid
|
||||
--> $DIR/cast-rfc0401.rs:81:30
|
||||
|
|
||||
81 | vec![0.0].iter().map(|s| s as f32).collect::<Vec<f32>>();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue