Rollup merge of #152555 - JonathanBrouwer:port_diagnostic_item, r=jdonszelmann

Port `#[rustc_diagnostic_item]` to the new attribute parsers

r? @jdonszelmann
This commit is contained in:
Jonathan Brouwer 2026-02-13 13:34:59 +01:00 committed by GitHub
commit a211e2fbba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 61 additions and 25 deletions

View file

@ -1425,14 +1425,12 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
// a note about editions
let note = if let Some(did) = did {
let requires_note = !did.is_local()
&& this.tcx.get_attrs(did, sym::rustc_diagnostic_item).any(
|attr| {
[sym::TryInto, sym::TryFrom, sym::FromIterator]
.map(|x| Some(x))
.contains(&attr.value_str())
},
&& find_attr!(
this.tcx.get_all_attrs(did),
AttributeKind::RustcDiagnosticItem(
sym::TryInto | sym::TryFrom | sym::FromIterator
)
);
requires_note.then(|| {
format!(
"'{}' is included in the prelude starting in Edition 2021",

View file

@ -21,7 +21,7 @@ use rustc_hir::attrs::AttributeKind;
use rustc_hir::def::Namespace::{self, *};
use rustc_hir::def::{self, CtorKind, CtorOf, DefKind, MacroKinds};
use rustc_hir::def_id::{CRATE_DEF_ID, DefId};
use rustc_hir::{MissingLifetimeKind, PrimTy};
use rustc_hir::{MissingLifetimeKind, PrimTy, find_attr};
use rustc_middle::ty;
use rustc_session::{Session, lint};
use rustc_span::edit_distance::{edit_distance, find_best_match_for_name};
@ -2446,10 +2446,10 @@ impl<'ast, 'ra, 'tcx> LateResolutionVisitor<'_, 'ast, 'ra, 'tcx> {
.iter()
.filter_map(|candidate| candidate.did)
.find(|did| {
self.r
.tcx
.get_attrs(*did, sym::rustc_diagnostic_item)
.any(|attr| attr.value_str() == Some(sym::Default))
find_attr!(
self.r.tcx.get_all_attrs(*did),
AttributeKind::RustcDiagnosticItem(sym::Default)
)
});
let Some(default_trait) = default_trait else {
return;