e444cbe5d6
* Finding pattern slices for `avoidable_slice_indexing` * `avoidable_slice_indexing` analysing slice usage * Add configuration to `avoidable_slice_indexing` * Emitting `avoidable_slice_indexing` with suggestions * Dogfooding and fixing bugs * Add ui-toml test for `avoidable_slice_indexing` * Correctly suggest `ref` keywords for `avoidable_slice_indexing` * Test and document `mut` for `avoid_slice_indexing` * Handle macros with `avoidable_slice_indexing` lint * Ignore slices with sub patterns in `avoidable_slice_indexing` * Update lint description for `avoidable_slice_indexing` * Move `avoidable_slice_indexing` to nursery * Added more tests for `avoidable_slice_indexing` * Update documentation and message for `avoidable_slice_indexing` * Teach `avoidable_slice_indexing` about `HirId`s and `Visitors` * Rename lint to `index_refutable_slice` and connected config
29 lines
585 B
Rust
29 lines
585 B
Rust
#![deny(clippy::index_refutable_slice)]
|
|
|
|
extern crate if_chain;
|
|
use if_chain::if_chain;
|
|
|
|
macro_rules! if_let_slice_macro {
|
|
() => {
|
|
// This would normally be linted
|
|
let slice: Option<&[u32]> = Some(&[1, 2, 3]);
|
|
if let Some(slice) = slice {
|
|
println!("{}", slice[0]);
|
|
}
|
|
};
|
|
}
|
|
|
|
fn main() {
|
|
// Don't lint this
|
|
if_let_slice_macro!();
|
|
|
|
// Do lint this
|
|
if_chain! {
|
|
let slice: Option<&[u32]> = Some(&[1, 2, 3]);
|
|
if let Some(slice) = slice;
|
|
then {
|
|
println!("{}", slice[0]);
|
|
}
|
|
}
|
|
}
|