Skip to content

Commit ca3b393

Browse files
committed
Auto merge of rust-lang#12690 - flip1995:rustup, r=flip1995
Rustup r? `@ghost` changelog: none
2 parents cdd6336 + fca4e16 commit ca3b393

36 files changed

+108
-143
lines changed

Diff for: clippy_lints/src/attrs/mixed_attributes_style.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use super::MIXED_ATTRIBUTES_STYLE;
22
use clippy_utils::diagnostics::span_lint;
33
use rustc_ast::{AttrKind, AttrStyle, Attribute};
44
use rustc_data_structures::fx::FxHashSet;
5+
use rustc_data_structures::sync::Lrc;
56
use rustc_lint::{LateContext, LintContext};
67
use rustc_span::source_map::SourceMap;
78
use rustc_span::{SourceFile, Span, Symbol};
8-
use std::sync::Arc;
99

1010
#[derive(Hash, PartialEq, Eq)]
1111
enum SimpleAttrKind {
@@ -79,7 +79,7 @@ fn lint_mixed_attrs(cx: &LateContext<'_>, attrs: &[Attribute]) {
7979
);
8080
}
8181

82-
fn attr_in_same_src_as_item(source_map: &SourceMap, item_src: &Arc<SourceFile>, attr_span: Span) -> bool {
82+
fn attr_in_same_src_as_item(source_map: &SourceMap, item_src: &Lrc<SourceFile>, attr_span: Span) -> bool {
8383
let attr_src = source_map.lookup_source_file(attr_span.lo());
84-
Arc::ptr_eq(item_src, &attr_src)
84+
Lrc::ptr_eq(item_src, &attr_src)
8585
}

Diff for: clippy_lints/src/casts/ptr_as_ptr.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ pub(super) fn check(cx: &LateContext<'_>, expr: &Expr<'_>, msrv: &Msrv) {
7777

7878
let (help, final_suggestion) = if let Some(method) = omit_cast.corresponding_item() {
7979
// don't force absolute path
80-
let method = qpath_to_string(method);
80+
let method = qpath_to_string(&cx.tcx, method);
8181
("try call directly", format!("{method}{turbofish}()"))
8282
} else {
8383
let cast_expr_sugg = Sugg::hir_with_applicability(cx, cast_expr, "_", &mut app);

Diff for: clippy_lints/src/crate_in_macro_def.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ fn contains_unhygienic_crate_reference(tts: &TokenStream) -> Option<Span> {
8888
if !prev_is_dollar
8989
&& let Some(span) = is_crate_keyword(curr)
9090
&& let Some(next) = cursor.look_ahead(0)
91-
&& is_token(next, &TokenKind::ModSep)
91+
&& is_token(next, &TokenKind::PathSep)
9292
{
9393
return Some(span);
9494
}

Diff for: clippy_lints/src/dereference.rs

+2
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,7 @@ impl TyCoercionStability {
821821
| TyKind::Array(..)
822822
| TyKind::Ptr(_)
823823
| TyKind::BareFn(_)
824+
| TyKind::Pat(..)
824825
| TyKind::Never
825826
| TyKind::Tup(_)
826827
| TyKind::Path(_) => Self::Deref,
@@ -869,6 +870,7 @@ impl TyCoercionStability {
869870
| ty::Int(_)
870871
| ty::Uint(_)
871872
| ty::Array(..)
873+
| ty::Pat(..)
872874
| ty::Float(_)
873875
| ty::RawPtr(..)
874876
| ty::FnPtr(_)

Diff for: clippy_lints/src/derivable_impls.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use rustc_hir::{
99
};
1010
use rustc_lint::{LateContext, LateLintPass};
1111
use rustc_middle::ty::adjustment::{Adjust, PointerCoercion};
12-
use rustc_middle::ty::{self, Adt, AdtDef, GenericArgsRef, Ty, TypeckResults};
12+
use rustc_middle::ty::{self, AdtDef, GenericArgsRef, Ty, TypeckResults};
1313
use rustc_session::impl_lint_pass;
1414
use rustc_span::sym;
1515

@@ -79,7 +79,7 @@ fn is_path_self(e: &Expr<'_>) -> bool {
7979
fn contains_trait_object(ty: Ty<'_>) -> bool {
8080
match ty.kind() {
8181
ty::Ref(_, ty, _) => contains_trait_object(*ty),
82-
Adt(def, args) => def.is_box() && args[0].as_type().map_or(false, contains_trait_object),
82+
ty::Adt(def, args) => def.is_box() && args[0].as_type().map_or(false, contains_trait_object),
8383
ty::Dynamic(..) => true,
8484
_ => false,
8585
}
@@ -198,7 +198,7 @@ impl<'tcx> LateLintPass<'tcx> for DerivableImpls {
198198
&& let Node::ImplItem(impl_item) = cx.tcx.hir_node(impl_item_hir)
199199
&& let ImplItemKind::Fn(_, b) = &impl_item.kind
200200
&& let Body { value: func_expr, .. } = cx.tcx.hir().body(*b)
201-
&& let &Adt(adt_def, args) = cx.tcx.type_of(item.owner_id).instantiate_identity().kind()
201+
&& let &ty::Adt(adt_def, args) = cx.tcx.type_of(item.owner_id).instantiate_identity().kind()
202202
&& let attrs = cx.tcx.hir().attrs(item.hir_id())
203203
&& !attrs.iter().any(|attr| attr.doc_str().is_some())
204204
&& cx.tcx.hir().attrs(impl_item_hir).is_empty()

Diff for: clippy_lints/src/doc/needless_doctest_main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ pub fn check(
3838
// of all `#[test]` attributes in not ignored code examples
3939
fn check_code_sample(code: String, edition: Edition, ignore: bool) -> (bool, Vec<Range<usize>>) {
4040
rustc_driver::catch_fatal_errors(|| {
41-
rustc_span::create_session_globals_then(edition, || {
41+
rustc_span::create_session_globals_then(edition, None, || {
4242
let mut test_attr_spans = vec![];
4343
let filename = FileName::anon_source_code(&code);
4444

Diff for: clippy_lints/src/from_raw_with_void_ptr.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use clippy_utils::ty::is_c_void;
44
use rustc_hir::def_id::DefId;
55
use rustc_hir::{Expr, ExprKind, QPath};
66
use rustc_lint::{LateContext, LateLintPass};
7-
use rustc_middle::ty::RawPtr;
7+
use rustc_middle::ty;
88
use rustc_session::declare_lint_pass;
99
use rustc_span::sym;
1010

@@ -44,7 +44,7 @@ impl LateLintPass<'_> for FromRawWithVoidPtr {
4444
&& seg.ident.name == sym!(from_raw)
4545
&& let Some(type_str) = path_def_id(cx, ty).and_then(|id| def_id_matches_type(cx, id))
4646
&& let arg_kind = cx.typeck_results().expr_ty(arg).kind()
47-
&& let RawPtr(ty, _) = arg_kind
47+
&& let ty::RawPtr(ty, _) = arg_kind
4848
&& is_c_void(cx, *ty)
4949
{
5050
let msg = format!("creating a `{type_str}` from a void raw pointer");

Diff for: clippy_lints/src/functions/not_unsafe_ptr_arg_deref.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use rustc_hir::{self as hir, intravisit, HirIdSet};
1+
use rustc_hir::{self as hir, intravisit, HirId, HirIdSet};
22
use rustc_lint::LateContext;
33
use rustc_middle::ty;
44
use rustc_span::def_id::LocalDefId;
@@ -74,7 +74,7 @@ fn check_raw_ptr<'tcx>(
7474
}
7575
}
7676

77-
fn raw_ptr_arg(cx: &LateContext<'_>, arg: &hir::Param<'_>) -> Option<hir::HirId> {
77+
fn raw_ptr_arg(cx: &LateContext<'_>, arg: &hir::Param<'_>) -> Option<HirId> {
7878
if let (&hir::PatKind::Binding(_, id, _, _), Some(&ty::RawPtr(_, _))) = (
7979
&arg.pat.kind,
8080
cx.maybe_typeck_results()

Diff for: clippy_lints/src/functions/result.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use rustc_errors::Diag;
22
use rustc_hir as hir;
33
use rustc_lint::{LateContext, LintContext};
44
use rustc_middle::lint::in_external_macro;
5-
use rustc_middle::ty::{Adt, Ty};
5+
use rustc_middle::ty::{self, Ty};
66
use rustc_span::{sym, Span};
77

88
use clippy_utils::diagnostics::{span_lint_and_help, span_lint_and_then};
@@ -25,7 +25,7 @@ fn result_err_ty<'tcx>(
2525
.tcx
2626
.instantiate_bound_regions_with_erased(cx.tcx.fn_sig(id).instantiate_identity().output())
2727
&& is_type_diagnostic_item(cx, ty, sym::Result)
28-
&& let Adt(_, args) = ty.kind()
28+
&& let ty::Adt(_, args) = ty.kind()
2929
{
3030
let err_ty = args.type_at(1);
3131
Some((hir_ty, err_ty))
@@ -86,7 +86,7 @@ fn check_result_unit_err(cx: &LateContext<'_>, err_ty: Ty<'_>, fn_header_span: S
8686
}
8787

8888
fn check_result_large_err<'tcx>(cx: &LateContext<'tcx>, err_ty: Ty<'tcx>, hir_ty_span: Span, large_err_threshold: u64) {
89-
if let Adt(adt, subst) = err_ty.kind()
89+
if let ty::Adt(adt, subst) = err_ty.kind()
9090
&& let Some(local_def_id) = err_ty
9191
.ty_adt_def()
9292
.expect("already checked this is adt")

Diff for: clippy_lints/src/implicit_saturating_add.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use rustc_data_structures::packed::Pu128;
77
use rustc_errors::Applicability;
88
use rustc_hir::{BinOpKind, Block, Expr, ExprKind, Stmt, StmtKind};
99
use rustc_lint::{LateContext, LateLintPass};
10-
use rustc_middle::ty::{Int, IntTy, Ty, Uint, UintTy};
10+
use rustc_middle::ty::{IntTy, Ty, UintTy};
1111
use rustc_session::declare_lint_pass;
1212

1313
declare_clippy_lint! {
@@ -97,6 +97,7 @@ impl<'tcx> LateLintPass<'tcx> for ImplicitSaturatingAdd {
9797
}
9898

9999
fn get_int_max(ty: Ty<'_>) -> Option<u128> {
100+
use rustc_middle::ty::{Int, Uint};
100101
match ty.peel_refs().kind() {
101102
Int(IntTy::I8) => i8::MAX.try_into().ok(),
102103
Int(IntTy::I16) => i16::MAX.try_into().ok(),

Diff for: clippy_lints/src/index_refutable_slice.rs

+7-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use rustc_data_structures::fx::{FxHashSet, FxIndexMap};
88
use rustc_errors::Applicability;
99
use rustc_hir as hir;
1010
use rustc_hir::intravisit::{self, Visitor};
11+
use rustc_hir::HirId;
1112
use rustc_lint::{LateContext, LateLintPass};
1213
use rustc_middle::hir::nested_filter;
1314
use rustc_middle::ty;
@@ -87,9 +88,9 @@ impl<'tcx> LateLintPass<'tcx> for IndexRefutableSlice {
8788
extract_msrv_attr!(LateContext);
8889
}
8990

90-
fn find_slice_values(cx: &LateContext<'_>, pat: &hir::Pat<'_>) -> FxIndexMap<hir::HirId, SliceLintInformation> {
91-
let mut removed_pat: FxHashSet<hir::HirId> = FxHashSet::default();
92-
let mut slices: FxIndexMap<hir::HirId, SliceLintInformation> = FxIndexMap::default();
91+
fn find_slice_values(cx: &LateContext<'_>, pat: &hir::Pat<'_>) -> FxIndexMap<HirId, SliceLintInformation> {
92+
let mut removed_pat: FxHashSet<HirId> = FxHashSet::default();
93+
let mut slices: FxIndexMap<HirId, SliceLintInformation> = FxIndexMap::default();
9394
pat.walk_always(|pat| {
9495
// We'll just ignore mut and ref mut for simplicity sake right now
9596
if let hir::PatKind::Binding(
@@ -206,10 +207,10 @@ impl SliceLintInformation {
206207

207208
fn filter_lintable_slices<'tcx>(
208209
cx: &LateContext<'tcx>,
209-
slice_lint_info: FxIndexMap<hir::HirId, SliceLintInformation>,
210+
slice_lint_info: FxIndexMap<HirId, SliceLintInformation>,
210211
max_suggested_slice: u64,
211212
scope: &'tcx hir::Expr<'tcx>,
212-
) -> FxIndexMap<hir::HirId, SliceLintInformation> {
213+
) -> FxIndexMap<HirId, SliceLintInformation> {
213214
let mut visitor = SliceIndexLintingVisitor {
214215
cx,
215216
slice_lint_info,
@@ -223,7 +224,7 @@ fn filter_lintable_slices<'tcx>(
223224

224225
struct SliceIndexLintingVisitor<'a, 'tcx> {
225226
cx: &'a LateContext<'tcx>,
226-
slice_lint_info: FxIndexMap<hir::HirId, SliceLintInformation>,
227+
slice_lint_info: FxIndexMap<HirId, SliceLintInformation>,
227228
max_suggested_slice: u64,
228229
}
229230

Diff for: clippy_lints/src/large_enum_variant.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use rustc_errors::Applicability;
77
use rustc_hir::{Item, ItemKind};
88
use rustc_lint::{LateContext, LateLintPass};
99
use rustc_middle::lint::in_external_macro;
10-
use rustc_middle::ty::{Adt, Ty};
10+
use rustc_middle::ty::{self, Ty};
1111
use rustc_session::impl_lint_pass;
1212
use rustc_span::Span;
1313

@@ -82,7 +82,7 @@ impl<'tcx> LateLintPass<'tcx> for LargeEnumVariant {
8282
}
8383
if let ItemKind::Enum(ref def, _) = item.kind {
8484
let ty = cx.tcx.type_of(item.owner_id).instantiate_identity();
85-
let Adt(adt, subst) = ty.kind() else {
85+
let ty::Adt(adt, subst) = ty.kind() else {
8686
panic!("already checked whether this is an enum")
8787
};
8888
if adt.variants().len() <= 1 {
@@ -167,7 +167,7 @@ impl<'tcx> LateLintPass<'tcx> for LargeEnumVariant {
167167
}
168168

169169
fn maybe_copy<'tcx>(cx: &LateContext<'tcx>, ty: Ty<'tcx>) -> bool {
170-
if let Adt(_def, args) = ty.kind()
170+
if let ty::Adt(_def, args) = ty.kind()
171171
&& args.types().next().is_some()
172172
&& let Some(copy_trait) = cx.tcx.lang_items().copy_trait()
173173
{

Diff for: clippy_lints/src/large_include_file.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ impl LateLintPass<'_> for LargeIncludeFile {
7171
span_lint_and_note(
7272
cx,
7373
LARGE_INCLUDE_FILE,
74-
expr.span,
74+
expr.span.source_callsite(),
7575
"attempted to include a large file",
7676
None,
7777
format!(

Diff for: clippy_lints/src/lifetimes.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,7 @@ fn elision_suggestions(
291291
}) => {
292292
// expand `&'a T` to `&'a T`
293293
// ^^ ^^^
294-
let span = cx
295-
.sess()
296-
.source_map()
297-
.span_extend_while(usage.ident.span, |ch| ch.is_ascii_whitespace())
298-
.unwrap_or(usage.ident.span);
294+
let span = cx.sess().source_map().span_extend_while_whitespace(usage.ident.span);
299295

300296
(span, String::new())
301297
},

Diff for: clippy_lints/src/matches/match_wild_err_arm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pub(crate) fn check<'tcx>(cx: &LateContext<'tcx>, ex: &Expr<'tcx>, arms: &[Arm<'
1919
if is_type_diagnostic_item(cx, ex_ty, sym::Result) {
2020
for arm in arms {
2121
if let PatKind::TupleStruct(ref path, inner, _) = arm.pat.kind {
22-
let path_str = rustc_hir_pretty::qpath_to_string(path);
22+
let path_str = rustc_hir_pretty::qpath_to_string(&cx.tcx, path);
2323
if path_str == "Err" {
2424
let mut matching_wild = inner.iter().any(is_wild);
2525
let mut ident_bind_name = kw::Underscore;

Diff for: clippy_lints/src/methods/unnecessary_join.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use rustc_ast::ast::LitKind;
44
use rustc_errors::Applicability;
55
use rustc_hir::{Expr, ExprKind, LangItem};
66
use rustc_lint::LateContext;
7-
use rustc_middle::ty::{Ref, Slice};
7+
use rustc_middle::ty;
88
use rustc_span::Span;
99

1010
use super::UNNECESSARY_JOIN;
@@ -18,9 +18,9 @@ pub(super) fn check<'tcx>(
1818
) {
1919
let applicability = Applicability::MachineApplicable;
2020
let collect_output_adjusted_type = cx.typeck_results().expr_ty_adjusted(join_self_arg);
21-
if let Ref(_, ref_type, _) = collect_output_adjusted_type.kind()
21+
if let ty::Ref(_, ref_type, _) = collect_output_adjusted_type.kind()
2222
// the turbofish for collect is ::<Vec<String>>
23-
&& let Slice(slice) = ref_type.kind()
23+
&& let ty::Slice(slice) = ref_type.kind()
2424
&& is_type_lang_item(cx, *slice, LangItem::String)
2525
// the argument for join is ""
2626
&& let ExprKind::Lit(spanned) = &join_arg.kind

Diff for: clippy_lints/src/methods/unnecessary_to_owned.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ use rustc_errors::Applicability;
1212
use rustc_hir::def::{DefKind, Res};
1313
use rustc_hir::def_id::DefId;
1414
use rustc_hir::{BorrowKind, Expr, ExprKind, ItemKind, LangItem, Node};
15-
use rustc_hir_typeck::{FnCtxt, TypeckRootCtxt};
1615
use rustc_infer::infer::TyCtxtInferExt;
1716
use rustc_lint::LateContext;
1817
use rustc_middle::mir::Mutability;
@@ -437,9 +436,7 @@ fn can_change_type<'a>(cx: &LateContext<'a>, mut expr: &'a Expr<'a>, mut ty: Ty<
437436
Node::Item(item) => {
438437
if let ItemKind::Fn(_, _, body_id) = &item.kind
439438
&& let output_ty = return_ty(cx, item.owner_id)
440-
&& let root_ctxt = TypeckRootCtxt::new(cx.tcx, item.owner_id.def_id)
441-
&& let fn_ctxt = FnCtxt::new(&root_ctxt, cx.param_env, item.owner_id.def_id)
442-
&& fn_ctxt.can_coerce(ty, output_ty)
439+
&& rustc_hir_typeck::can_coerce(cx.tcx, cx.param_env, item.owner_id.def_id, ty, output_ty)
443440
{
444441
if has_lifetime(output_ty) && has_lifetime(ty) {
445442
return false;

Diff for: clippy_lints/src/misc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ declare_clippy_lint! {
6666
///
6767
/// ### Known problems
6868
/// The lint does not work properly with desugaring and
69-
/// macro, it has been allowed in the mean time.
69+
/// macro, it has been allowed in the meantime.
7070
///
7171
/// ### Example
7272
/// ```no_run

Diff for: clippy_lints/src/mut_key.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use clippy_utils::{def_path_def_ids, trait_ref_of_method};
44
use rustc_data_structures::fx::FxHashSet;
55
use rustc_hir as hir;
66
use rustc_lint::{LateContext, LateLintPass};
7-
use rustc_middle::ty::{Adt, Ty};
7+
use rustc_middle::ty::{self, Ty};
88
use rustc_session::impl_lint_pass;
99
use rustc_span::def_id::LocalDefId;
1010
use rustc_span::symbol::sym;
@@ -153,7 +153,7 @@ impl MutableKeyType {
153153
// generics (because the compiler cannot ensure immutability for unknown types).
154154
fn check_ty_<'tcx>(&self, cx: &LateContext<'tcx>, span: Span, ty: Ty<'tcx>) {
155155
let ty = ty.peel_refs();
156-
if let Adt(def, args) = ty.kind() {
156+
if let ty::Adt(def, args) = ty.kind() {
157157
let is_keyed_type = [sym::HashMap, sym::BTreeMap, sym::HashSet, sym::BTreeSet]
158158
.iter()
159159
.any(|diag_item| cx.tcx.is_diagnostic_item(*diag_item, def.did()));

Diff for: clippy_lints/src/mut_reference.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ impl<'tcx> LateLintPass<'tcx> for UnnecessaryMutPassed {
4949
cx,
5050
arguments.iter().collect(),
5151
cx.typeck_results().expr_ty(fn_expr),
52-
&rustc_hir_pretty::qpath_to_string(path),
52+
&rustc_hir_pretty::qpath_to_string(&cx.tcx, path),
5353
"function",
5454
);
5555
}

Diff for: clippy_lints/src/non_copy_const.rs

+3-10
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use rustc_middle::mir::interpret::{ErrorHandled, EvalToValTreeResult, GlobalId};
1818
use rustc_middle::ty::adjustment::Adjust;
1919
use rustc_middle::ty::{self, Ty, TyCtxt};
2020
use rustc_session::impl_lint_pass;
21-
use rustc_span::{sym, InnerSpan, Span};
21+
use rustc_span::{sym, InnerSpan, Span, DUMMY_SP};
2222
use rustc_target::abi::VariantIdx;
2323

2424
// FIXME: this is a correctness problem but there's no suitable
@@ -290,21 +290,14 @@ impl NonCopyConst {
290290
promoted: None,
291291
};
292292
let param_env = cx.tcx.param_env(def_id).with_reveal_all_normalized(cx.tcx);
293-
let result = cx
294-
.tcx
295-
.const_eval_global_id_for_typeck(param_env, cid, rustc_span::DUMMY_SP);
293+
let result = cx.tcx.const_eval_global_id_for_typeck(param_env, cid, DUMMY_SP);
296294
self.is_value_unfrozen_raw(cx, result, ty)
297295
}
298296

299297
fn is_value_unfrozen_expr<'tcx>(&self, cx: &LateContext<'tcx>, hir_id: HirId, def_id: DefId, ty: Ty<'tcx>) -> bool {
300298
let args = cx.typeck_results().node_args(hir_id);
301299

302-
let result = Self::const_eval_resolve(
303-
cx.tcx,
304-
cx.param_env,
305-
ty::UnevaluatedConst::new(def_id, args),
306-
rustc_span::DUMMY_SP,
307-
);
300+
let result = Self::const_eval_resolve(cx.tcx, cx.param_env, ty::UnevaluatedConst::new(def_id, args), DUMMY_SP);
308301
self.is_value_unfrozen_raw(cx, result, ty)
309302
}
310303

0 commit comments

Comments
 (0)