1 use std
::path
::{Path, PathBuf}
;
3 use crate::rustc_stderr
::Level
;
4 use crate::rustc_stderr
::Message
;
8 fn config() -> Config
{
10 root_dir
: PathBuf
::from("$RUSTROOT"),
11 program
: CommandBuilder
::cmd("cake"),
12 ..Config
::rustc(PathBuf
::new())
22 let _x: &i32 = unsafe { mem::transmute(16usize) }; //~ ERROR: encountered a dangling reference (address $HEX is unallocated)
25 let comments
= Comments
::parse(s
).unwrap();
26 let mut errors
= vec
![];
27 let config
= config();
29 vec
![], vec
![], vec
![], vec
![], vec
![],
32 message
:"Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
49 [Error
::PatternNotFound(pattern
), Error
::ErrorsWithoutPattern { path, .. }
]
50 if path
.as_ref().is_some_and(|p
| p
.line().get() == 5) && pattern
.line().get() == 5 => {}
51 _
=> panic
!("{:#?}", errors
),
61 let _x: &i32 = unsafe { mem::transmute(16usize) }; //~ ERROR: encountered a dangling reference (address 0x10 is unallocated)
64 let comments
= Comments
::parse(s
).unwrap();
65 let config
= config();
67 let messages
= vec
![vec
![], vec
![], vec
![], vec
![], vec
![], vec
![
69 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
75 let mut errors
= vec
![];
88 _
=> panic
!("{:#?}", errors
),
92 // only difference to above is a wrong line number
94 let messages
= vec
![vec
![], vec
![], vec
![], vec
![], vec
![
96 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
102 let mut errors
= vec
![];
114 [Error
::PatternNotFound(pattern
), Error
::ErrorsWithoutPattern { path, .. }
]
115 if path
.as_ref().is_some_and(|p
| p
.line().get() == 4)
116 && pattern
.line().get() == 5 => {}
117 _
=> panic
!("not the expected error: {:#?}", errors
),
121 // only difference to first is a wrong level
124 vec
![], vec
![], vec
![], vec
![], vec
![],
127 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
133 let mut errors
= vec
![];
145 // Note no `ErrorsWithoutPattern`, because there are no `//~NOTE` in the test file, so we ignore them
146 [Error
::PatternNotFound(pattern
)] if pattern
.line().get() == 5 => {}
147 _
=> panic
!("not the expected error: {:#?}", errors
),
153 fn duplicate_pattern() {
158 let _x: &i32 = unsafe { mem::transmute(16usize) }; //~ ERROR: encountered a dangling reference (address 0x10 is unallocated)
159 //~^ ERROR: encountered a dangling reference (address 0x10 is unallocated)
162 let comments
= Comments
::parse(s
).unwrap();
163 let config
= config();
165 vec
![], vec
![], vec
![], vec
![], vec
![],
168 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
174 let mut errors
= vec
![];
186 [Error
::PatternNotFound(pattern
)] if pattern
.line().get() == 6 => {}
187 _
=> panic
!("{:#?}", errors
),
192 fn missing_pattern() {
197 let _x: &i32 = unsafe { mem::transmute(16usize) }; //~ ERROR: encountered a dangling reference (address 0x10 is unallocated)
200 let comments
= Comments
::parse(s
).unwrap();
201 let config
= config();
203 vec
![], vec
![], vec
![], vec
![], vec
![],
206 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
211 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
217 let mut errors
= vec
![];
229 [Error
::ErrorsWithoutPattern { path, .. }
]
230 if path
.as_ref().is_some_and(|p
| p
.line().get() == 5) => {}
231 _
=> panic
!("{:#?}", errors
),
236 fn missing_warn_pattern() {
241 let _x: &i32 = unsafe { mem::transmute(16usize) }; //~ ERROR: encountered a dangling reference (address 0x10 is unallocated)
245 let comments
= Comments
::parse(s
).unwrap();
246 let config
= config();
255 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
260 message
: "kaboom".to_string(),
265 message
: "cake".to_string(),
271 let mut errors
= vec
![];
283 [Error
::ErrorsWithoutPattern { path, msgs, .. }
]
284 if path
.as_ref().is_some_and(|p
| p
.line().get() == 5) =>
291 }] if message
== "kaboom" => {}
292 _
=> panic
!("{:#?}", msgs
),
295 _
=> panic
!("{:#?}", errors
),
300 fn missing_implicit_warn_pattern() {
303 //@require-annotations-for-level: ERROR
305 let _x: &i32 = unsafe { mem::transmute(16usize) }; //~ ERROR: encountered a dangling reference (address 0x10 is unallocated)
309 let comments
= Comments
::parse(s
).unwrap();
310 let config
= config();
319 message
: "Undefined Behavior: type validation failed: encountered a dangling reference (address 0x10 is unallocated)".to_string(),
324 message
: "kaboom".to_string(),
329 message
: "cake".to_string(),
335 let mut errors
= vec
![];
348 _
=> panic
!("{:#?}", errors
),