10
10
11
11
fn illegal_cast < U : ?Sized , V : ?Sized > ( u : * const U ) -> * const V
12
12
{
13
- u as * const V //~ ERROR vtable kinds
13
+ u as * const V
14
+ //~^ ERROR casting
15
+ //~^^ NOTE vtable kinds
14
16
}
15
17
16
18
fn illegal_cast_2 < U : ?Sized > ( u : * const U ) -> * const str
17
19
{
18
- u as * const str //~ ERROR vtable kinds
20
+ u as * const str
21
+ //~^ ERROR casting
22
+ //~^^ NOTE vtable kinds
19
23
}
20
24
21
25
trait Foo { fn foo ( & self ) { } }
@@ -41,32 +45,58 @@ fn main()
41
45
let _ = v as ( u32 , ) ; //~ ERROR non-scalar
42
46
let _ = Some ( & v) as * const u8 ; //~ ERROR non-scalar
43
47
44
- let _ = v as f32 ; //~ ERROR through a usize first
45
- let _ = main as f64 ; //~ ERROR through a usize first
46
- let _ = & v as usize ; //~ ERROR through a raw pointer first
47
- let _ = f as * const u8 ; //~ ERROR through a usize first
48
- let _ = 3 as bool ; //~ ERROR compare with zero
49
- let _ = E :: A as bool ; //~ ERROR compare with zero
48
+ let _ = v as f32 ;
49
+ //~^ ERROR casting
50
+ //~^^ HELP through a usize first
51
+ let _ = main as f64 ;
52
+ //~^ ERROR casting
53
+ //~^^ HELP through a usize first
54
+ let _ = & v as usize ;
55
+ //~^ ERROR casting
56
+ //~^^ HELP through a raw pointer first
57
+ let _ = f as * const u8 ;
58
+ //~^ ERROR casting
59
+ //~^^ HELP through a usize first
60
+ let _ = 3 as bool ;
61
+ //~^ ERROR cannot cast as `bool`
62
+ //~^^ HELP compare with zero
63
+ let _ = E :: A as bool ;
64
+ //~^ ERROR cannot cast as `bool`
65
+ //~^^ HELP compare with zero
50
66
let _ = 0x61u32 as char ; //~ ERROR only `u8` can be cast
51
67
52
- let _ = false as f32 ; //~ ERROR through an integer first
53
- let _ = E :: A as f32 ; //~ ERROR through an integer first
54
- let _ = 'a' as f32 ; //~ ERROR through an integer first
68
+ let _ = false as f32 ;
69
+ //~^ ERROR casting
70
+ //~^^ HELP through an integer first
71
+ let _ = E :: A as f32 ;
72
+ //~^ ERROR casting
73
+ //~^^ HELP through an integer first
74
+ let _ = 'a' as f32 ;
75
+ //~^ ERROR casting
76
+ //~^^ HELP through an integer first
55
77
56
- let _ = false as * const u8 ; //~ ERROR through a usize first
57
- let _ = E :: A as * const u8 ; //~ ERROR through a usize first
58
- let _ = 'a' as * const u8 ; //~ ERROR through a usize first
78
+ let _ = false as * const u8 ;
79
+ //~^ ERROR casting
80
+ //~^^ HELP through a usize first
81
+ let _ = E :: A as * const u8 ;
82
+ //~^ ERROR casting
83
+ //~^^ HELP through a usize first
84
+ let _ = 'a' as * const u8 ;
85
+ //~^ ERROR casting
86
+ //~^^ HELP through a usize first
59
87
60
- let _ = 42usize as * const [ u8 ] ; //~ ERROR illegal cast
61
- let _ = v as * const [ u8 ] ; //~ ERROR illegal cast
88
+ let _ = 42usize as * const [ u8 ] ; //~ ERROR casting
89
+ let _ = v as * const [ u8 ] ; //~ ERROR casting
62
90
let _ = fat_v as * const Foo ;
63
91
//~^ ERROR `core::marker::Sized` is not implemented for the type `[u8]`
64
- let _ = foo as * const str ; //~ ERROR illegal cast
65
- let _ = foo as * mut str ; //~ ERROR illegal cast
66
- let _ = main as * mut str ; //~ ERROR illegal cast
67
- let _ = & f as * mut f32 ; //~ ERROR illegal cast
68
- let _ = & f as * const f64 ; //~ ERROR illegal cast
69
- let _ = fat_v as usize ; //~ ERROR through a raw pointer first
92
+ let _ = foo as * const str ; //~ ERROR casting
93
+ let _ = foo as * mut str ; //~ ERROR casting
94
+ let _ = main as * mut str ; //~ ERROR casting
95
+ let _ = & f as * mut f32 ; //~ ERROR casting
96
+ let _ = & f as * const f64 ; //~ ERROR casting
97
+ let _ = fat_v as usize ;
98
+ //~^ ERROR casting
99
+ //~^^ HELP through a raw pointer first
70
100
71
101
let a : * const str = "hello" ;
72
102
let _ = a as * const Foo ;
@@ -76,6 +106,10 @@ fn main()
76
106
let _ = main. f as * const u32 ; //~ ERROR attempted access of field
77
107
78
108
let cf: * const Foo = & 0 ;
79
- let _ = cf as * const [ u8 ] ; //~ ERROR vtable kinds
80
- let _ = cf as * const Bar ; //~ ERROR vtable kinds
109
+ let _ = cf as * const [ u8 ] ;
110
+ //~^ ERROR casting
111
+ //~^^ NOTE vtable kinds
112
+ let _ = cf as * const Bar ;
113
+ //~^ ERROR casting
114
+ //~^^ NOTE vtable kinds
81
115
}
0 commit comments