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.rs35
1 files changed, 16 insertions, 19 deletions
diff --git a/crates/hir/src/diagnostics.rs b/crates/hir/src/diagnostics.rs
index c1e814ec22..a6d67e8fb4 100644
--- a/crates/hir/src/diagnostics.rs
+++ b/crates/hir/src/diagnostics.rs
@@ -604,13 +604,13 @@ impl<'db> AnyDiagnostic<'db> {
}
}
BodyValidationDiagnostic::RemoveUnnecessaryElse { if_expr } => {
- if let Ok(source_ptr) = source_map.expr_syntax(if_expr) {
- if let Some(ptr) = source_ptr.value.cast::<ast::IfExpr>() {
- return Some(
- RemoveUnnecessaryElse { if_expr: InFile::new(source_ptr.file_id, ptr) }
- .into(),
- );
- }
+ if let Ok(source_ptr) = source_map.expr_syntax(if_expr)
+ && let Some(ptr) = source_ptr.value.cast::<ast::IfExpr>()
+ {
+ return Some(
+ RemoveUnnecessaryElse { if_expr: InFile::new(source_ptr.file_id, ptr) }
+ .into(),
+ );
}
}
}
@@ -620,7 +620,7 @@ impl<'db> AnyDiagnostic<'db> {
pub(crate) fn inference_diagnostic(
db: &'db dyn HirDatabase,
def: DefWithBodyId,
- d: &InferenceDiagnostic,
+ d: &InferenceDiagnostic<'db>,
source_map: &hir_def::expr_store::BodySourceMap,
sig_map: &hir_def::expr_store::ExpressionStoreSourceMap,
) -> Option<AnyDiagnostic<'db>> {
@@ -666,8 +666,7 @@ impl<'db> AnyDiagnostic<'db> {
}
InferenceDiagnostic::ExpectedFunction { call_expr, found } => {
let call_expr = expr_syntax(*call_expr)?;
- ExpectedFunction { call: call_expr, found: Type::new(db, def, found.clone()) }
- .into()
+ ExpectedFunction { call: call_expr, found: Type::new(db, def, *found) }.into()
}
InferenceDiagnostic::UnresolvedField {
expr,
@@ -679,7 +678,7 @@ impl<'db> AnyDiagnostic<'db> {
UnresolvedField {
expr,
name: name.clone(),
- receiver: Type::new(db, def, receiver.clone()),
+ receiver: Type::new(db, def, *receiver),
method_with_same_name_exists: *method_with_same_name_exists,
}
.into()
@@ -695,10 +694,8 @@ impl<'db> AnyDiagnostic<'db> {
UnresolvedMethodCall {
expr,
name: name.clone(),
- receiver: Type::new(db, def, receiver.clone()),
- field_with_same_name: field_with_same_name
- .clone()
- .map(|ty| Type::new(db, def, ty)),
+ receiver: Type::new(db, def, *receiver),
+ field_with_same_name: (*field_with_same_name).map(|ty| Type::new(db, def, ty)),
assoc_func_with_same_name: assoc_func_with_same_name.map(Into::into),
}
.into()
@@ -725,7 +722,7 @@ impl<'db> AnyDiagnostic<'db> {
}
InferenceDiagnostic::TypedHole { expr, expected } => {
let expr = expr_syntax(*expr)?;
- TypedHole { expr, expected: Type::new(db, def, expected.clone()) }.into()
+ TypedHole { expr, expected: Type::new(db, def, *expected) }.into()
}
&InferenceDiagnostic::MismatchedTupleStructPatArgCount { pat, expected, found } => {
let expr_or_pat = match pat {
@@ -742,12 +739,12 @@ impl<'db> AnyDiagnostic<'db> {
}
InferenceDiagnostic::CastToUnsized { expr, cast_ty } => {
let expr = expr_syntax(*expr)?;
- CastToUnsized { expr, cast_ty: Type::new(db, def, cast_ty.clone()) }.into()
+ CastToUnsized { expr, cast_ty: Type::new(db, def, *cast_ty) }.into()
}
InferenceDiagnostic::InvalidCast { expr, error, expr_ty, cast_ty } => {
let expr = expr_syntax(*expr)?;
- let expr_ty = Type::new(db, def, expr_ty.clone());
- let cast_ty = Type::new(db, def, cast_ty.clone());
+ let expr_ty = Type::new(db, def, *expr_ty);
+ let cast_ty = Type::new(db, def, *cast_ty);
InvalidCast { expr, error: *error, expr_ty, cast_ty }.into()
}
InferenceDiagnostic::TyDiagnostic { source, diag } => {