mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-10 07:04:18 +00:00
Allow allowing of toplevel_ref_arg lint
I'm not sure why some lints need the `HirId` to be able to recognize the lint level attributes, but this commit makes the lint level attributes work for `toplevel_ref_arg`.
This commit is contained in:
parent
0d9ef393b8
commit
158aa39a7c
2 changed files with 11 additions and 6 deletions
|
@ -13,8 +13,8 @@ use crate::consts::{constant, Constant};
|
|||
use crate::utils::sugg::Sugg;
|
||||
use crate::utils::{
|
||||
get_item_name, get_parent_expr, implements_trait, in_constant, in_macro, is_integer_literal, iter_input_pats,
|
||||
last_path_segment, match_qpath, match_trait_method, paths, snippet, span_lint, span_lint_and_then, walk_ptrs_ty,
|
||||
SpanlessEq,
|
||||
last_path_segment, match_qpath, match_trait_method, paths, snippet, span_lint, span_lint_and_then,
|
||||
span_lint_hir_and_then, walk_ptrs_ty, SpanlessEq,
|
||||
};
|
||||
|
||||
declare_clippy_lint! {
|
||||
|
@ -282,19 +282,20 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MiscLints {
|
|||
if let Some(ref init) = l.init;
|
||||
then {
|
||||
if an == BindingAnnotation::Ref || an == BindingAnnotation::RefMut {
|
||||
let init = Sugg::hir(cx, init, "..");
|
||||
let sugg_init = Sugg::hir(cx, init, "..");
|
||||
let (mutopt,initref) = if an == BindingAnnotation::RefMut {
|
||||
("mut ", init.mut_addr())
|
||||
("mut ", sugg_init.mut_addr())
|
||||
} else {
|
||||
("", init.addr())
|
||||
("", sugg_init.addr())
|
||||
};
|
||||
let tyopt = if let Some(ref ty) = l.ty {
|
||||
format!(": &{mutopt}{ty}", mutopt=mutopt, ty=snippet(cx, ty.span, "_"))
|
||||
} else {
|
||||
String::new()
|
||||
};
|
||||
span_lint_and_then(cx,
|
||||
span_lint_hir_and_then(cx,
|
||||
TOPLEVEL_REF_ARG,
|
||||
init.hir_id,
|
||||
l.pat.span,
|
||||
"`ref` on an entire `let` pattern is discouraged, take a reference with `&` instead",
|
||||
|db| {
|
||||
|
|
|
@ -22,4 +22,8 @@ fn main() {
|
|||
|
||||
let (ref x, _) = (1, 2); // ok, not top level
|
||||
println!("The answer is {}.", x);
|
||||
|
||||
// Make sure that allowing the lint works
|
||||
#[allow(clippy::toplevel_ref_arg)]
|
||||
let ref mut x = 1_234_543;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue