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.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/crates/hir/src/diagnostics.rs b/crates/hir/src/diagnostics.rs
index 487e0c8f7a..cec6be8e89 100644
--- a/crates/hir/src/diagnostics.rs
+++ b/crates/hir/src/diagnostics.rs
@@ -68,6 +68,7 @@ diagnostics![
PrivateAssocItem,
PrivateField,
ReplaceFilterMapNextWithFindMap,
+ RemoveTrailingReturn,
RemoveUnnecessaryElse,
TraitImplIncorrectSafety,
TraitImplMissingAssocItems,
@@ -344,6 +345,12 @@ pub struct TraitImplRedundantAssocItems {
}
#[derive(Debug)]
+pub struct RemoveTrailingReturn {
+ pub file_id: HirFileId,
+ pub return_expr: AstPtr<ast::Expr>,
+}
+
+#[derive(Debug)]
pub struct RemoveUnnecessaryElse {
pub if_expr: InFile<AstPtr<ast::IfExpr>>,
}
@@ -450,6 +457,17 @@ impl AnyDiagnostic {
Err(SyntheticSyntax) => (),
}
}
+ BodyValidationDiagnostic::RemoveTrailingReturn { return_expr } => {
+ if let Ok(source_ptr) = source_map.expr_syntax(return_expr) {
+ return Some(
+ RemoveTrailingReturn {
+ file_id: source_ptr.file_id,
+ return_expr: source_ptr.value,
+ }
+ .into(),
+ );
+ }
+ }
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>() {