do not lint on indexing inside const contexts
This commit is contained in:
parent
b161dc659c
commit
2c61b45576
@ -1,7 +1,9 @@
|
|||||||
use clippy_utils::diagnostics::{span_lint_hir, span_lint_hir_and_then};
|
use clippy_utils::diagnostics::{span_lint_hir, span_lint_hir_and_then};
|
||||||
use clippy_utils::source::snippet_opt;
|
use clippy_utils::source::snippet_opt;
|
||||||
use clippy_utils::ty::has_drop;
|
use clippy_utils::ty::has_drop;
|
||||||
use clippy_utils::{any_parent_is_automatically_derived, is_lint_allowed, path_to_local, peel_blocks};
|
use clippy_utils::{
|
||||||
|
any_parent_is_automatically_derived, is_inside_always_const_context, is_lint_allowed, path_to_local, peel_blocks,
|
||||||
|
};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
use rustc_hir::def::{DefKind, Res};
|
use rustc_hir::def::{DefKind, Res};
|
||||||
use rustc_hir::{
|
use rustc_hir::{
|
||||||
@ -265,6 +267,9 @@ fn check_unnecessary_operation(cx: &LateContext<'_>, stmt: &Stmt<'_>) {
|
|||||||
&& reduced.iter().all(|e| e.span.ctxt() == ctxt)
|
&& reduced.iter().all(|e| e.span.ctxt() == ctxt)
|
||||||
{
|
{
|
||||||
if let ExprKind::Index(..) = &expr.kind {
|
if let ExprKind::Index(..) = &expr.kind {
|
||||||
|
if is_inside_always_const_context(cx.tcx, expr.hir_id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
let snippet =
|
let snippet =
|
||||||
if let (Some(arr), Some(func)) = (snippet_opt(cx, reduced[0].span), snippet_opt(cx, reduced[1].span)) {
|
if let (Some(arr), Some(func)) = (snippet_opt(cx, reduced[0].span), snippet_opt(cx, reduced[1].span)) {
|
||||||
format!("assert!({}.len() > {});", &arr, &func)
|
format!("assert!({}.len() > {});", &arr, &func)
|
||||||
|
@ -114,12 +114,12 @@ fn main() {
|
|||||||
break 'label
|
break 'label
|
||||||
};
|
};
|
||||||
let () = const {
|
let () = const {
|
||||||
assert!([42, 55].len() > get_usize());
|
[42, 55][get_usize()];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const _: () = {
|
const _: () = {
|
||||||
assert!([42, 55].len() > get_usize());
|
[42, 55][get_usize()];
|
||||||
};
|
};
|
||||||
|
|
||||||
const fn foo() {
|
const fn foo() {
|
||||||
|
@ -119,23 +119,11 @@ LL | | s: String::from("blah"),
|
|||||||
LL | | };
|
LL | | };
|
||||||
| |______^ help: statement can be reduced to: `String::from("blah");`
|
| |______^ help: statement can be reduced to: `String::from("blah");`
|
||||||
|
|
||||||
error: unnecessary operation
|
|
||||||
--> tests/ui/unnecessary_operation.rs:121:9
|
|
||||||
|
|
|
||||||
LL | [42, 55][get_usize()];
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: statement can be written as: `assert!([42, 55].len() > get_usize());`
|
|
||||||
|
|
||||||
error: unnecessary operation
|
|
||||||
--> tests/ui/unnecessary_operation.rs:126:5
|
|
||||||
|
|
|
||||||
LL | [42, 55][get_usize()];
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: statement can be written as: `assert!([42, 55].len() > get_usize());`
|
|
||||||
|
|
||||||
error: unnecessary operation
|
error: unnecessary operation
|
||||||
--> tests/ui/unnecessary_operation.rs:130:5
|
--> tests/ui/unnecessary_operation.rs:130:5
|
||||||
|
|
|
|
||||||
LL | [42, 55][get_usize()];
|
LL | [42, 55][get_usize()];
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: statement can be written as: `assert!([42, 55].len() > get_usize());`
|
| ^^^^^^^^^^^^^^^^^^^^^^ help: statement can be written as: `assert!([42, 55].len() > get_usize());`
|
||||||
|
|
||||||
error: aborting due to 22 previous errors
|
error: aborting due to 20 previous errors
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user