Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/diagnostics.rs')
-rw-r--r--crates/hir/src/diagnostics.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/crates/hir/src/diagnostics.rs b/crates/hir/src/diagnostics.rs
index d56d4b7431..a044f24587 100644
--- a/crates/hir/src/diagnostics.rs
+++ b/crates/hir/src/diagnostics.rs
@@ -103,6 +103,7 @@ diagnostics![AnyDiagnostic<'db> ->
AwaitOutsideOfAsync,
BreakOutsideOfLoop,
CastToUnsized<'db>,
+ ExpectedArrayOrSlicePat<'db>,
ExpectedFunction<'db>,
FunctionalRecordUpdateOnNonStruct,
GenericDefaultRefersToSelf,
@@ -297,6 +298,12 @@ pub struct MismatchedArrayPatLen {
}
#[derive(Debug)]
+pub struct ExpectedArrayOrSlicePat<'db> {
+ pub pat: InFile<ExprOrPatPtr>,
+ pub found: Type<'db>,
+}
+
+#[derive(Debug)]
pub struct ExpectedFunction<'db> {
pub call: InFile<ExprOrPatPtr>,
pub found: Type<'db>,
@@ -777,6 +784,10 @@ impl<'db> AnyDiagnostic<'db> {
let pat = pat_syntax(pat)?.map(Into::into);
MismatchedArrayPatLen { pat, expected, found, has_rest }.into()
}
+ InferenceDiagnostic::ExpectedArrayOrSlicePat { pat, found } => {
+ let pat = pat_syntax(*pat)?.map(Into::into);
+ ExpectedArrayOrSlicePat { pat, found: Type::new(db, def, found.as_ref()) }.into()
+ }
&InferenceDiagnostic::DuplicateField { field: expr, variant } => {
let expr_or_pat = match expr {
ExprOrPatId::ExprId(expr) => {