diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-12-16 21:54:28 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-16 21:54:28 +0000 |
| commit | 7f45fedec505a256d91076c083ff8a6b32236687 (patch) | |
| tree | bdf067a4b6f858d552d29de06c0c5f4dbe16f5a1 /src/tools | |
| parent | 0e81d18ddee868b88a8bf74be33c089f5414b828 (diff) | |
| parent | 536318c9da168233600db80ad14c613b01a34825 (diff) | |
| download | rust-7f45fedec505a256d91076c083ff8a6b32236687.tar.gz rust-7f45fedec505a256d91076c083ff8a6b32236687.zip | |
Merge pull request #18700 from ChayimFriedman2/dyn-send
fix: Fix a panic with a diagnostics fix when a keyword is used as a field
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_field.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_field.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_field.rs index 656bedff1a8..4accd181ca4 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_field.rs +++ b/src/tools/rust-analyzer/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` + } +} + "#, + ); + } } |
