Skip to content

Commit 083b1c1

Browse files
committed
Remove is_type_lang_item
1 parent fe13e06 commit 083b1c1

37 files changed

+96
-91
lines changed

book/src/development/common_tools_writing_lints.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ paths for Clippy can be found in [paths.rs][paths]
161161
To check if our type defines a method called `some_method`:
162162

163163
```rust
164-
use clippy_utils::res::MaybeDef;
164+
use clippy_utils::ty::is_type_lang_item;
165165
use clippy_utils::{sym, return_ty};
166166

167167
impl<'tcx> LateLintPass<'tcx> for MyTypeImpl {

clippy_lints/src/collection_is_never_read.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use clippy_utils::diagnostics::span_lint;
2-
use clippy_utils::ty::{get_type_diagnostic_name, is_type_lang_item};
2+
use clippy_utils::res::MaybeDef;
3+
use clippy_utils::ty::get_type_diagnostic_name;
34
use clippy_utils::visitors::{Visitable, for_each_expr};
45
use clippy_utils::{get_enclosing_block, path_to_local_id};
56
use core::ops::ControlFlow;
@@ -71,7 +72,7 @@ fn match_acceptable_type(cx: &LateContext<'_>, local: &LetStmt<'_>) -> bool {
7172
| sym::Vec
7273
| sym::VecDeque
7374
)
74-
) || is_type_lang_item(cx, ty, LangItem::String)
75+
) || ty.is_lang_item(cx, LangItem::String)
7576
}
7677

7778
fn has_no_read_access<'tcx, T: Visitable<'tcx>>(cx: &LateContext<'tcx>, id: HirId, block: T) -> bool {

clippy_lints/src/drop_forget_ref.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use clippy_utils::diagnostics::span_lint_and_then;
22
use clippy_utils::is_must_use_func_call;
3-
use clippy_utils::ty::{is_copy, is_must_use_ty, is_type_lang_item};
3+
use clippy_utils::res::MaybeDef;
4+
use clippy_utils::ty::{is_copy, is_must_use_ty};
45
use rustc_hir::{Arm, Expr, ExprKind, LangItem, Node};
56
use rustc_lint::{LateContext, LateLintPass};
67
use rustc_session::declare_lint_pass;
@@ -97,7 +98,7 @@ impl<'tcx> LateLintPass<'tcx> for DropForgetRef {
9798
sym::mem_forget if arg_ty.is_ref() => return,
9899
sym::mem_drop if is_copy && !drop_is_single_call_in_arm => return,
99100
sym::mem_forget if is_copy => return,
100-
sym::mem_drop if is_type_lang_item(cx, arg_ty, LangItem::ManuallyDrop) => return,
101+
sym::mem_drop if arg_ty.is_lang_item(cx, LangItem::ManuallyDrop) => return,
101102
sym::mem_drop
102103
if !(arg_ty.needs_drop(cx.tcx, cx.typing_env())
103104
|| is_must_use_func_call(cx, arg)

clippy_lints/src/format_args.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ use clippy_utils::macros::{
99
root_macro_call_first_node,
1010
};
1111
use clippy_utils::msrvs::{self, Msrv};
12+
use clippy_utils::res::MaybeDef;
1213
use clippy_utils::source::{SpanRangeExt, snippet};
13-
use clippy_utils::ty::{implements_trait, is_type_lang_item};
14+
use clippy_utils::ty::implements_trait;
1415
use clippy_utils::{is_diag_trait_item, is_from_proc_macro, is_in_test, trait_ref_of_method};
1516
use itertools::Itertools;
1617
use rustc_ast::{
@@ -344,7 +345,7 @@ impl<'tcx> FormatArgsExpr<'_, 'tcx> {
344345
if let Some(placeholder_span) = placeholder.span
345346
&& *options != FormatOptions::default()
346347
&& let ty = self.cx.typeck_results().expr_ty(arg).peel_refs()
347-
&& is_type_lang_item(self.cx, ty, LangItem::FormatArguments)
348+
&& ty.is_lang_item(self.cx, LangItem::FormatArguments)
348349
{
349350
span_lint_and_then(
350351
self.cx,

clippy_lints/src/format_push_string.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_and_then;
22
use clippy_utils::higher;
3-
use clippy_utils::ty::is_type_lang_item;
3+
use clippy_utils::res::MaybeDef;
44
use rustc_hir::{AssignOpKind, Expr, ExprKind, LangItem, MatchSource};
55
use rustc_lint::{LateContext, LateLintPass};
66
use rustc_session::declare_lint_pass;
@@ -41,7 +41,10 @@ declare_clippy_lint! {
4141
declare_lint_pass!(FormatPushString => [FORMAT_PUSH_STRING]);
4242

4343
fn is_string(cx: &LateContext<'_>, e: &Expr<'_>) -> bool {
44-
is_type_lang_item(cx, cx.typeck_results().expr_ty(e).peel_refs(), LangItem::String)
44+
cx.typeck_results()
45+
.expr_ty(e)
46+
.peel_refs()
47+
.is_lang_item(cx, LangItem::String)
4548
}
4649
fn is_format(cx: &LateContext<'_>, e: &Expr<'_>) -> bool {
4750
let e = e.peel_blocks().peel_borrows();

clippy_lints/src/from_str_radix_10.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_and_sugg;
2+
use clippy_utils::res::MaybeDef;
23
use clippy_utils::sugg::Sugg;
3-
use clippy_utils::ty::is_type_lang_item;
44
use clippy_utils::{is_in_const_context, is_integer_literal, sym};
55
use rustc_errors::Applicability;
66
use rustc_hir::{Expr, ExprKind, LangItem, PrimTy, QPath, TyKind, def};
@@ -89,5 +89,5 @@ impl<'tcx> LateLintPass<'tcx> for FromStrRadix10 {
8989

9090
/// Checks if a Ty is `String` or `&str`
9191
fn is_ty_stringish(cx: &LateContext<'_>, ty: Ty<'_>) -> bool {
92-
is_type_lang_item(cx, ty, LangItem::String) || ty.peel_refs().is_str()
92+
ty.is_lang_item(cx, LangItem::String) || ty.peel_refs().is_str()
9393
}

clippy_lints/src/inherent_to_string.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use clippy_utils::diagnostics::span_lint_and_help;
2-
use clippy_utils::ty::{implements_trait, is_type_lang_item};
2+
use clippy_utils::res::MaybeDef;
3+
use clippy_utils::ty::implements_trait;
34
use clippy_utils::{return_ty, trait_ref_of_method};
45
use rustc_abi::ExternAbi;
56
use rustc_hir::{GenericParamKind, ImplItem, ImplItemKind, LangItem};
@@ -104,7 +105,7 @@ impl<'tcx> LateLintPass<'tcx> for InherentToString {
104105
&& impl_item.generics.params.iter().all(|p| matches!(p.kind, GenericParamKind::Lifetime { .. }))
105106
&& !impl_item.span.from_expansion()
106107
// Check if return type is String
107-
&& is_type_lang_item(cx, return_ty(cx, impl_item.owner_id), LangItem::String)
108+
&& return_ty(cx, impl_item.owner_id).is_lang_item(cx, LangItem::String)
108109
// Filters instances of to_string which are required by a trait
109110
&& trait_ref_of_method(cx, impl_item.owner_id).is_none()
110111
{

clippy_lints/src/loops/char_indices_as_byte_indices.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::ops::ControlFlow;
22

33
use clippy_utils::diagnostics::span_lint_hir_and_then;
4-
use clippy_utils::ty::is_type_lang_item;
4+
use clippy_utils::res::MaybeDef;
55
use clippy_utils::visitors::for_each_expr;
66
use clippy_utils::{eq_expr_value, higher, path_to_local_id, sym};
77
use rustc_errors::{Applicability, MultiSpan};
@@ -81,7 +81,7 @@ fn check_index_usage<'tcx>(
8181
return;
8282
};
8383

84-
let is_string_like = |ty: Ty<'_>| ty.is_str() || is_type_lang_item(cx, ty, LangItem::String);
84+
let is_string_like = |ty: Ty<'_>| ty.is_str() || ty.is_lang_item(cx, LangItem::String);
8585
let message = match parent_expr.kind {
8686
ExprKind::MethodCall(segment, recv, ..)
8787
// We currently only lint `str` methods (which `String` can deref to), so a `.is_str()` check is sufficient here

clippy_lints/src/loops/explicit_iter_loop.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
use super::EXPLICIT_ITER_LOOP;
22
use clippy_utils::diagnostics::span_lint_and_sugg;
33
use clippy_utils::msrvs::{self, Msrv};
4+
use clippy_utils::res::MaybeDef;
45
use clippy_utils::source::snippet_with_context;
56
use clippy_utils::sym;
67
use clippy_utils::ty::{
7-
implements_trait, implements_trait_with_env, is_copy, is_type_lang_item, make_normalized_projection,
8+
implements_trait, implements_trait_with_env, is_copy, make_normalized_projection,
89
make_normalized_projection_with_regions, normalize_with_regions,
910
};
1011
use rustc_errors::Applicability;
@@ -127,8 +128,7 @@ fn is_ref_iterable<'tcx>(
127128
let self_ty = typeck.expr_ty(self_arg);
128129
let self_is_copy = is_copy(cx, self_ty);
129130

130-
if is_type_lang_item(cx, self_ty.peel_refs(), rustc_hir::LangItem::OwnedBox)
131-
&& !msrv.meets(cx, msrvs::BOX_INTO_ITER)
131+
if self_ty.peel_refs().is_lang_item(cx, rustc_hir::LangItem::OwnedBox) && !msrv.meets(cx, msrvs::BOX_INTO_ITER)
132132
{
133133
return None;
134134
}

clippy_lints/src/manual_ignore_case_cmp.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use clippy_utils::diagnostics::span_lint_and_then;
33
use clippy_utils::res::MaybeDef;
44
use clippy_utils::source::snippet_with_applicability;
55
use clippy_utils::sym;
6-
use clippy_utils::ty::{get_type_diagnostic_name, is_type_lang_item};
6+
use clippy_utils::ty::get_type_diagnostic_name;
77
use rustc_ast::LitKind;
88
use rustc_errors::Applicability;
99
use rustc_hir::ExprKind::{Binary, Lit, MethodCall};
@@ -74,7 +74,7 @@ fn needs_ref_to_cmp(cx: &LateContext<'_>, ty: Ty<'_>) -> bool {
7474
ty.is_char()
7575
|| *ty.kind() == ty::Uint(UintTy::U8)
7676
|| ty.is_diag_item(cx, sym::Vec)
77-
|| is_type_lang_item(cx, ty, LangItem::String)
77+
|| ty.is_lang_item(cx, LangItem::String)
7878
}
7979

8080
impl LateLintPass<'_> for ManualIgnoreCaseCmp {

0 commit comments

Comments
 (0)