1
Fork 0

Rollup merge of #137263 - compiler-errors:inherentless, r=lcnr

Register `USAGE_OF_TYPE_IR_INHERENT`, remove inherent usages

I implemented a lint to discourage the usage of `rustc_type_ir::inherent` but never actually enabled it. People started using `rustc_type_ir::inherent` methods through globs, lol.

r? fmease or reassign as you please
This commit is contained in:
Matthias Krüger 2025-02-20 00:55:14 +01:00 committed by GitHub
commit 4981994588
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 4 additions and 5 deletions

View file

@ -641,6 +641,7 @@ fn register_internals(store: &mut LintStore) {
LintId::of(LINT_PASS_IMPL_WITHOUT_MACRO), LintId::of(LINT_PASS_IMPL_WITHOUT_MACRO),
LintId::of(USAGE_OF_QUALIFIED_TY), LintId::of(USAGE_OF_QUALIFIED_TY),
LintId::of(NON_GLOB_IMPORT_OF_TYPE_IR_INHERENT), LintId::of(NON_GLOB_IMPORT_OF_TYPE_IR_INHERENT),
LintId::of(USAGE_OF_TYPE_IR_INHERENT),
LintId::of(BAD_OPT_ACCESS), LintId::of(BAD_OPT_ACCESS),
LintId::of(SPAN_USE_EQ_CTXT), LintId::of(SPAN_USE_EQ_CTXT),
], ],

View file

@ -1,9 +1,8 @@
//! This module ensures that if a function's ABI requires a particular target feature, //! This module ensures that if a function's ABI requires a particular target feature,
//! that target feature is enabled both on the callee and all callers. //! that target feature is enabled both on the callee and all callers.
use rustc_abi::{BackendRepr, RegKind}; use rustc_abi::{BackendRepr, ExternAbi, RegKind};
use rustc_hir::CRATE_HIR_ID; use rustc_hir::CRATE_HIR_ID;
use rustc_middle::mir::{self, traversal}; use rustc_middle::mir::{self, traversal};
use rustc_middle::ty::inherent::*;
use rustc_middle::ty::{self, Instance, InstanceKind, Ty, TyCtxt}; use rustc_middle::ty::{self, Instance, InstanceKind, Ty, TyCtxt};
use rustc_session::lint::builtin::ABI_UNSUPPORTED_VECTOR_TYPES; use rustc_session::lint::builtin::ABI_UNSUPPORTED_VECTOR_TYPES;
use rustc_span::def_id::DefId; use rustc_span::def_id::DefId;
@ -97,7 +96,7 @@ fn check_call_site_abi<'tcx>(
span: Span, span: Span,
caller: InstanceKind<'tcx>, caller: InstanceKind<'tcx>,
) { ) {
if callee.fn_sig(tcx).abi().is_rust() { if callee.fn_sig(tcx).abi() == ExternAbi::Rust {
// "Rust" ABI never passes arguments in vector registers. // "Rust" ABI never passes arguments in vector registers.
return; return;
} }

View file

@ -18,7 +18,6 @@ use rustc_middle::ty::{
TypeFoldable, TypeFolder, TypeSuperFoldable, TypeckResults, TypeFoldable, TypeFolder, TypeSuperFoldable, TypeckResults,
}; };
use rustc_span::{BytePos, DUMMY_SP, FileName, Ident, Span, sym}; use rustc_span::{BytePos, DUMMY_SP, FileName, Ident, Span, sym};
use rustc_type_ir::inherent::*;
use rustc_type_ir::visit::TypeVisitableExt; use rustc_type_ir::visit::TypeVisitableExt;
use tracing::{debug, instrument, warn}; use tracing::{debug, instrument, warn};
@ -217,7 +216,7 @@ impl<'a, 'tcx> TypeFolder<TyCtxt<'tcx>> for ClosureEraser<'a, 'tcx> {
// `_` because then we'd end up with `Vec<_, _>`, instead of // `_` because then we'd end up with `Vec<_, _>`, instead of
// `Vec<_>`. // `Vec<_>`.
arg arg
} else if let GenericArgKind::Type(_) = arg.kind() { } else if let GenericArgKind::Type(_) = arg.unpack() {
// We don't replace lifetime or const params, only type params. // We don't replace lifetime or const params, only type params.
self.new_infer().into() self.new_infer().into()
} else { } else {