Fix a panic with a diagnostics fix when a keyword is used as a field

I found it easiest to fix in the quickfix code, and not deeper (e.g. body lowering).
This commit is contained in:
Chayim Refael Friedman 2024-12-16 19:58:29 +02:00
parent 27e824fad4
commit 8277c0336e

View file

@ -90,7 +90,9 @@ fn field_fix(ctx: &DiagnosticsContext<'_>, d: &hir::UnresolvedField) -> Option<A
make::ty("()")
};
if !is_editable_crate(target_module.krate(), ctx.sema.db) {
if !is_editable_crate(target_module.krate(), ctx.sema.db)
|| SyntaxKind::from_keyword(field_name, ctx.edition).is_some()
{
return None;
}
@ -501,4 +503,19 @@ fn main() {}
"#,
)
}
#[test]
fn regression_18683() {
check_diagnostics(
r#"
struct S;
impl S {
fn f(self) {
self.self
// ^^^^ error: no field `self` on type `S`
}
}
"#,
);
}
}