diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-07-06 15:44:12 +0200 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2024-07-06 15:44:12 +0200 |
| commit | e8be2a0ac5c4756fed82ea6c38532a12cd9d68d2 (patch) | |
| tree | c727c3fa057272b3fb45295570d7682cc1e821b4 | |
| parent | fc92ee8f24edd1b6c6116b93b8118dfb1bc400ff (diff) | |
| download | rust-e8be2a0ac5c4756fed82ea6c38532a12cd9d68d2.tar.gz rust-e8be2a0ac5c4756fed82ea6c38532a12cd9d68d2.zip | |
Diagnose unresolved self value in path expression
| -rw-r--r-- | src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs | 3 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_ident.rs | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs b/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs index 36472435370..7a0f7872a64 100644 --- a/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs +++ b/src/tools/rust-analyzer/crates/hir-ty/src/infer/expr.rs @@ -440,7 +440,8 @@ impl InferenceContext<'_> { let ty = match self.infer_path(p, tgt_expr.into()) { Some(ty) => ty, None => { - if matches!(p, Path::Normal { mod_path, .. } if mod_path.is_ident()) { + if matches!(p, Path::Normal { mod_path, .. } if mod_path.is_ident() || mod_path.is_self()) + { self.push_diagnostic(InferenceDiagnostic::UnresolvedIdent { expr: tgt_expr, }); diff --git a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_ident.rs b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_ident.rs index 7aa3e16536c..9a81682aaeb 100644 --- a/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_ident.rs +++ b/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/unresolved_ident.rs @@ -56,4 +56,20 @@ fn main() { "#, ); } + + #[test] + fn unresolved_self_val() { + check_diagnostics( + r#" +fn main() { + self.a; + //^^^^ error: no such value in this scope + let self: + self = + self; + //^^^^ error: no such value in this scope +} +"#, + ); + } } |
