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
| -rw-r--r-- | crates/ide-assists/src/handlers/desugar_try_expr.rs | 23 |
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", + ); + } } |