Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #17546 - Veykril:unresolved-self, r=Veykril
internal: Diagnose unresolved self value in path expression
bors 2024-07-06
parent f2afcb8 · parent 4420e71 · commit 39d7962
-rw-r--r--crates/hir-ty/src/infer/expr.rs3
-rw-r--r--crates/ide-diagnostics/src/handlers/unresolved_ident.rs16
2 files changed, 18 insertions, 1 deletions
diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs
index 3647243537..7a0f7872a6 100644
--- a/crates/hir-ty/src/infer/expr.rs
+++ b/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/crates/ide-diagnostics/src/handlers/unresolved_ident.rs b/crates/ide-diagnostics/src/handlers/unresolved_ident.rs
index 7aa3e16536..9a81682aae 100644
--- a/crates/ide-diagnostics/src/handlers/unresolved_ident.rs
+++ b/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
+}
+"#,
+ );
+ }
}