mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-03 17:35:28 +03:00
85 lines
1.8 KiB
Rust
85 lines
1.8 KiB
Rust
//@aux-build:proc_macros.rs
|
|
#![allow(clippy::no_effect, clippy::unnecessary_operation, clippy::useless_vec, unused)]
|
|
#![warn(clippy::single_range_in_vec_init)]
|
|
|
|
#[macro_use]
|
|
extern crate proc_macros;
|
|
|
|
macro_rules! a {
|
|
() => {
|
|
vec![0..200];
|
|
};
|
|
}
|
|
|
|
fn awa<T: PartialOrd>(start: T, end: T) {
|
|
[start..end];
|
|
}
|
|
|
|
fn awa_vec<T: PartialOrd>(start: T, end: T) {
|
|
vec![start..end];
|
|
}
|
|
|
|
fn main() {
|
|
// Lint
|
|
[0; 200];
|
|
//~^ single_range_in_vec_init
|
|
vec![0; 200];
|
|
//~^ single_range_in_vec_init
|
|
[0u8; 200];
|
|
//~^ single_range_in_vec_init
|
|
[0usize; 200];
|
|
//~^ single_range_in_vec_init
|
|
[0; 200usize];
|
|
//~^ single_range_in_vec_init
|
|
vec![0u8; 200];
|
|
//~^ single_range_in_vec_init
|
|
vec![0usize; 200];
|
|
//~^ single_range_in_vec_init
|
|
vec![0; 200usize];
|
|
//~^ single_range_in_vec_init
|
|
// Only suggest collect
|
|
(0..200isize).collect::<std::vec::Vec<isize>>();
|
|
//~^ single_range_in_vec_init
|
|
(0..200isize).collect::<std::vec::Vec<isize>>();
|
|
//~^ single_range_in_vec_init
|
|
// Do not lint
|
|
[0..200, 0..100];
|
|
vec![0..200, 0..100];
|
|
[0.0..200.0];
|
|
vec![0.0..200.0];
|
|
// `Copy` is not implemented for `Range`, so this doesn't matter
|
|
// FIXME: [0..200; 2];
|
|
// FIXME: [vec!0..200; 2];
|
|
|
|
// Unfortunately skips any macros
|
|
a!();
|
|
|
|
// Skip external macros and procedural macros
|
|
external! {
|
|
[0..200];
|
|
vec![0..200];
|
|
}
|
|
with_span! {
|
|
span
|
|
[0..200];
|
|
vec![0..200];
|
|
}
|
|
}
|
|
|
|
fn issue16042() {
|
|
use std::ops::Range;
|
|
|
|
let input = vec![Range { start: 0, end: 5 }];
|
|
}
|
|
|
|
fn issue16044() {
|
|
macro_rules! as_i32 {
|
|
($x:expr) => {
|
|
$x as i32
|
|
};
|
|
}
|
|
|
|
let input = (0..as_i32!(10)).collect::<std::vec::Vec<i32>>();
|
|
//~^ single_range_in_vec_init
|
|
}
|