Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #21860 from A4-Tacks/desugar-try-let-else-wrap-ty
fix: wrap `Option<>` for desugar_try_expr_let_else
A4-Tacks 8 weeks ago
parent da2fe7f · parent 972741b · commit b81d339
-rw-r--r--crates/ide-assists/src/handlers/desugar_try_expr.rs23
1 files changed, 22 insertions, 1 deletions
diff --git a/crates/ide-assists/src/handlers/desugar_try_expr.rs b/crates/ide-assists/src/handlers/desugar_try_expr.rs
index 02879837dc..e43cf0bc8a 100644
--- a/crates/ide-assists/src/handlers/desugar_try_expr.rs
+++ b/crates/ide-assists/src/handlers/desugar_try_expr.rs
@@ -116,7 +116,7 @@ pub(crate) fn desugar_try_expr(acc: &mut Assists, ctx: &AssistContext<'_>) -> Op
let fill_expr = || crate::utils::expr_fill_default(ctx.config);
let new_let_stmt = make.let_else_stmt(
try_enum.happy_pattern(pat),
- let_stmt.ty(),
+ let_stmt.ty().map(|ty| make.ty_option(ty).into()),
expr,
make.block_expr(
iter::once(
@@ -248,4 +248,25 @@ fn test() {
"Replace try expression with let else",
);
}
+
+ #[test]
+ fn test_desugar_try_expr_option_let_else_with_type() {
+ check_assist_by_label(
+ desugar_try_expr,
+ r#"
+//- minicore: try, option
+fn test() {
+ let pat: bool = Some(true)$0?;
+}
+ "#,
+ r#"
+fn test() {
+ let Some(pat): Option<bool> = Some(true) else {
+ return None;
+ };
+}
+ "#,
+ "Replace try expression with let else",
+ );
+ }
}