1
Fork 0

Rollup merge of #138868 - mejrs:d_not_recommend_typo, r=davidtwco

Add do_not_recommend typo help
This commit is contained in:
Matthias Krüger 2025-03-24 20:40:09 +01:00 committed by GitHub
commit a678d2068d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 25 additions and 8 deletions

View file

@ -28,7 +28,7 @@ use rustc_session::lint::builtin::{
UNUSED_MACRO_RULES, UNUSED_MACROS,
};
use rustc_session::parse::feature_err;
use rustc_span::edit_distance::edit_distance;
use rustc_span::edit_distance::find_best_match_for_name;
use rustc_span::edition::Edition;
use rustc_span::hygiene::{self, AstPass, ExpnData, ExpnKind, LocalExpnId, MacroKind};
use rustc_span::{DUMMY_SP, Ident, Span, Symbol, kw, sym};
@ -652,13 +652,13 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
if res == Res::NonMacroAttr(NonMacroAttrKind::Tool)
&& let [namespace, attribute, ..] = &*path.segments
&& namespace.ident.name == sym::diagnostic
&& !(attribute.ident.name == sym::on_unimplemented
|| attribute.ident.name == sym::do_not_recommend)
&& ![sym::on_unimplemented, sym::do_not_recommend].contains(&attribute.ident.name)
{
let distance =
edit_distance(attribute.ident.name.as_str(), sym::on_unimplemented.as_str(), 5);
let typo_name = distance.map(|_| sym::on_unimplemented);
let typo_name = find_best_match_for_name(
&[sym::on_unimplemented, sym::do_not_recommend],
attribute.ident.name,
Some(5),
);
self.tcx.sess.psess.buffer_lint(
UNKNOWN_OR_MALFORMED_DIAGNOSTIC_ATTRIBUTES,

View file

@ -16,4 +16,9 @@ trait Y{}
//~^^HELP an attribute with a similar name exists
trait Z{}
#[diagnostic::dont_recommend]
//~^ERROR unknown diagnostic attribute
//~^^HELP an attribute with a similar name exists
impl X for u8 {}
fn main(){}

View file

@ -37,5 +37,17 @@ help: an attribute with a similar name exists
LL | #[diagnostic::on_unimplemented]
| ++
error: aborting due to 3 previous errors
error: unknown diagnostic attribute
--> $DIR/suggest_typos.rs:19:15
|
LL | #[diagnostic::dont_recommend]
| ^^^^^^^^^^^^^^
|
help: an attribute with a similar name exists
|
LL - #[diagnostic::dont_recommend]
LL + #[diagnostic::do_not_recommend]
|
error: aborting due to 4 previous errors