Skip to content

Commit 151fc9a

Browse files
committed
Remove unwraps from Generate delegate trait
1 parent eed86c0 commit 151fc9a

File tree

1 file changed

+34
-34
lines changed

1 file changed

+34
-34
lines changed

crates/ide-assists/src/handlers/generate_delegate_trait.rs

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ impl Struct {
213213
// continue;
214214
// }
215215
let signature = delegee.signature(db);
216-
let delegate = generate_impl(ctx, self, &field.ty, &field.name, delegee);
216+
let Some(delegate) = generate_impl(ctx, self, &field.ty, &field.name, delegee) else { continue; };
217217

218218
acc.add_group(
219219
&GroupLabel("Delegate trait impl for field...".to_owned()),
@@ -237,7 +237,7 @@ fn generate_impl(
237237
field_ty: &ast::Type,
238238
field_name: &String,
239239
delegee: &Delegee,
240-
) -> ast::Impl {
240+
) -> Option<ast::Impl> {
241241
let delegate: ast::Impl;
242242
let source: ast::Impl;
243243
let genpar: Option<ast::GenericParamList>;
@@ -247,7 +247,7 @@ fn generate_impl(
247247

248248
match delegee {
249249
Delegee::Bound(delegee) => {
250-
let in_file = ctx.sema.source(delegee.0.to_owned()).unwrap();
250+
let in_file = ctx.sema.source(delegee.0.to_owned())?;
251251
let source: ast::Trait = in_file.value;
252252

253253
delegate = make::impl_trait(
@@ -293,15 +293,15 @@ fn generate_impl(
293293
None => {}
294294
};
295295

296-
let target = ctx.sema.scope(strukt.strukt.syntax()).unwrap();
297-
let source = ctx.sema.scope(source.syntax()).unwrap();
296+
let target = ctx.sema.scope(strukt.strukt.syntax())?;
297+
let source = ctx.sema.scope(source.syntax())?;
298298

299299
let transform =
300300
PathTransform::trait_impl(&target, &source, delegee.0, delegate.clone());
301301
transform.apply(&delegate.syntax());
302302
}
303303
Delegee::Impls(delegee) => {
304-
let in_file = ctx.sema.source(delegee.1.to_owned()).unwrap();
304+
let in_file = ctx.sema.source(delegee.1.to_owned())?;
305305
source = in_file.value;
306306
delegate = make::impl_trait(
307307
delegee.0.is_unsafe(db),
@@ -341,16 +341,16 @@ fn generate_impl(
341341
}
342342
});
343343

344-
let target = ctx.sema.scope(strukt.strukt.syntax()).unwrap();
345-
let source = ctx.sema.scope(source.syntax()).unwrap();
344+
let target = ctx.sema.scope(strukt.strukt.syntax())?;
345+
let source = ctx.sema.scope(source.syntax())?;
346346

347347
let transform =
348348
PathTransform::trait_impl(&target, &source, delegee.0, delegate.clone());
349349
transform.apply(&delegate.syntax());
350350
}
351351
}
352352

353-
delegate
353+
Some(delegate)
354354
}
355355

356356
fn process_assoc_item(
@@ -359,19 +359,19 @@ fn process_assoc_item(
359359
base_name: &str,
360360
) -> Option<ast::AssocItem> {
361361
match item {
362-
AssocItem::Const(c) => Some(const_assoc_item(c, qual_path_ty)),
363-
AssocItem::Fn(f) => Some(func_assoc_item(f, qual_path_ty, base_name)),
362+
AssocItem::Const(c) => const_assoc_item(c, qual_path_ty),
363+
AssocItem::Fn(f) => func_assoc_item(f, qual_path_ty, base_name),
364364
AssocItem::MacroCall(_) => {
365365
// FIXME : Handle MacroCall case.
366-
// return Some(macro_assoc_item(mac, qual_path_ty));
366+
// macro_assoc_item(mac, qual_path_ty)
367367
None
368368
}
369-
AssocItem::TypeAlias(ta) => Some(ty_assoc_item(ta, qual_path_ty)),
369+
AssocItem::TypeAlias(ta) => ty_assoc_item(ta, qual_path_ty),
370370
}
371371
}
372372

373-
fn const_assoc_item(item: syntax::ast::Const, qual_path_ty: ast::Path) -> AssocItem {
374-
let path_expr_segment = make::path_from_text(item.name().unwrap().to_string().as_str());
373+
fn const_assoc_item(item: syntax::ast::Const, qual_path_ty: ast::Path) -> Option<AssocItem> {
374+
let path_expr_segment = make::path_from_text(item.name()?.to_string().as_str());
375375

376376
// We want rhs of the const assignment to be a qualified path
377377
// The general case for const assigment can be found [here](`https://doc.rust-lang.org/reference/items/constant-items.html`)
@@ -380,19 +380,19 @@ fn const_assoc_item(item: syntax::ast::Const, qual_path_ty: ast::Path) -> AssocI
380380
// FIXME : We can't rely on `make::path_qualified` for now but it would be nice to replace the following with it.
381381
// make::path_qualified(qual_path_ty, path_expr_segment.as_single_segment().unwrap());
382382
let qualpath = qualpath(qual_path_ty, path_expr_segment);
383-
let inner = make::item_const(
384-
item.visibility(),
385-
item.name().unwrap(),
386-
item.ty().unwrap(),
387-
make::expr_path(qualpath),
388-
)
389-
.clone_for_update();
383+
let inner =
384+
make::item_const(item.visibility(), item.name()?, item.ty()?, make::expr_path(qualpath))
385+
.clone_for_update();
390386

391-
AssocItem::Const(inner)
387+
Some(AssocItem::Const(inner))
392388
}
393389

394-
fn func_assoc_item(item: syntax::ast::Fn, qual_path_ty: Path, base_name: &str) -> AssocItem {
395-
let path_expr_segment = make::path_from_text(item.name().unwrap().to_string().as_str());
390+
fn func_assoc_item(
391+
item: syntax::ast::Fn,
392+
qual_path_ty: Path,
393+
base_name: &str,
394+
) -> Option<AssocItem> {
395+
let path_expr_segment = make::path_from_text(item.name()?.to_string().as_str());
396396
let qualpath = qualpath(qual_path_ty, path_expr_segment);
397397

398398
let call = match item.param_list() {
@@ -415,7 +415,7 @@ fn func_assoc_item(item: syntax::ast::Fn, qual_path_ty: Path, base_name: &str) -
415415
if param_count > 0 {
416416
// Add SelfParam and a TOKEN::COMMA
417417
ted::insert_all(
418-
Position::after(args.l_paren_token().unwrap()),
418+
Position::after(args.l_paren_token()?),
419419
vec![
420420
NodeOrToken::Node(tail_expr_self.syntax().clone_for_update()),
421421
NodeOrToken::Token(make::token(SyntaxKind::WHITESPACE)),
@@ -425,7 +425,7 @@ fn func_assoc_item(item: syntax::ast::Fn, qual_path_ty: Path, base_name: &str) -
425425
} else {
426426
// Add SelfParam only
427427
ted::insert(
428-
Position::after(args.l_paren_token().unwrap()),
428+
Position::after(args.l_paren_token()?),
429429
NodeOrToken::Node(tail_expr_self.syntax().clone_for_update()),
430430
);
431431
}
@@ -444,10 +444,10 @@ fn func_assoc_item(item: syntax::ast::Fn, qual_path_ty: Path, base_name: &str) -
444444
let body = make::block_expr(vec![], Some(call)).clone_for_update();
445445
let func = make::fn_(
446446
item.visibility(),
447-
item.name().unwrap(),
447+
item.name()?,
448448
item.generic_param_list(),
449449
item.where_clause(),
450-
item.param_list().unwrap(),
450+
item.param_list()?,
451451
body,
452452
item.ret_type(),
453453
item.async_token().is_some(),
@@ -456,14 +456,14 @@ fn func_assoc_item(item: syntax::ast::Fn, qual_path_ty: Path, base_name: &str) -
456456
)
457457
.clone_for_update();
458458

459-
AssocItem::Fn(func.indent(edit::IndentLevel(1)).clone_for_update())
459+
Some(AssocItem::Fn(func.indent(edit::IndentLevel(1)).clone_for_update()))
460460
}
461461

462-
fn ty_assoc_item(item: syntax::ast::TypeAlias, qual_path_ty: Path) -> AssocItem {
463-
let path_expr_segment = make::path_from_text(item.name().unwrap().to_string().as_str());
462+
fn ty_assoc_item(item: syntax::ast::TypeAlias, qual_path_ty: Path) -> Option<AssocItem> {
463+
let path_expr_segment = make::path_from_text(item.name()?.to_string().as_str());
464464
let qualpath = qualpath(qual_path_ty, path_expr_segment);
465465
let ty = make::ty_path(qualpath);
466-
let ident = item.name().unwrap().to_string();
466+
let ident = item.name()?.to_string();
467467

468468
let alias = make::ty_alias(
469469
ident.as_str(),
@@ -474,7 +474,7 @@ fn ty_assoc_item(item: syntax::ast::TypeAlias, qual_path_ty: Path) -> AssocItem
474474
)
475475
.clone_for_update();
476476

477-
AssocItem::TypeAlias(alias)
477+
Some(AssocItem::TypeAlias(alias))
478478
}
479479

480480
fn qualpath(qual_path_ty: ast::Path, path_expr_seg: ast::Path) -> ast::Path {

0 commit comments

Comments
 (0)