Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/unresolved_field.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/unresolved_field.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/crates/ide-diagnostics/src/handlers/unresolved_field.rs b/crates/ide-diagnostics/src/handlers/unresolved_field.rs
index 656bedff1a..4accd181ca 100644
--- a/crates/ide-diagnostics/src/handlers/unresolved_field.rs
+++ b/crates/ide-diagnostics/src/handlers/unresolved_field.rs
@@ -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`
+ }
+}
+ "#,
+ );
+ }
}