rust/tests/ui/vec.rs
2017-02-07 21:05:30 +01:00

75 lines
1.5 KiB
Rust

#![feature(plugin)]
#![plugin(clippy)]
#![deny(useless_vec)]
#[derive(Debug)]
struct NonCopy;
fn on_slice(_: &[u8]) {}
#[allow(ptr_arg)]
fn on_vec(_: &Vec<u8>) {}
struct Line {
length: usize,
}
impl Line {
fn length(&self) -> usize {
self.length
}
}
fn main() {
on_slice(&vec![]);
//~^ ERROR useless use of `vec!`
//~| HELP you can use
//~| SUGGESTION on_slice(&[])
on_slice(&[]);
on_slice(&vec![1, 2]);
//~^ ERROR useless use of `vec!`
//~| HELP you can use
//~| SUGGESTION on_slice(&[1, 2])
on_slice(&[1, 2]);
on_slice(&vec ![1, 2]);
//~^ ERROR useless use of `vec!`
//~| HELP you can use
//~| SUGGESTION on_slice(&[1, 2])
on_slice(&[1, 2]);
on_slice(&vec!(1, 2));
//~^ ERROR useless use of `vec!`
//~| HELP you can use
//~| SUGGESTION on_slice(&[1, 2])
on_slice(&[1, 2]);
on_slice(&vec![1; 2]);
//~^ ERROR useless use of `vec!`
//~| HELP you can use
//~| SUGGESTION on_slice(&[1; 2])
on_slice(&[1; 2]);
on_vec(&vec![]);
on_vec(&vec![1, 2]);
on_vec(&vec![1; 2]);
// Now with non-constant expressions
let line = Line { length: 2 };
on_slice(&vec![2; line.length]);
on_slice(&vec![2; line.length()]);
for a in vec![1, 2, 3] {
//~^ ERROR useless use of `vec!`
//~| HELP you can use
//~| SUGGESTION for a in &[1, 2, 3] {
println!("{:?}", a);
}
for a in vec![NonCopy, NonCopy] {
println!("{:?}", a);
}
}