@@ -213,7 +213,7 @@ impl Struct {
213
213
// continue;
214
214
// }
215
215
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 ; } ;
217
217
218
218
acc. add_group (
219
219
& GroupLabel ( "Delegate trait impl for field..." . to_owned ( ) ) ,
@@ -237,7 +237,7 @@ fn generate_impl(
237
237
field_ty : & ast:: Type ,
238
238
field_name : & String ,
239
239
delegee : & Delegee ,
240
- ) -> ast:: Impl {
240
+ ) -> Option < ast:: Impl > {
241
241
let delegate: ast:: Impl ;
242
242
let source: ast:: Impl ;
243
243
let genpar: Option < ast:: GenericParamList > ;
@@ -247,7 +247,7 @@ fn generate_impl(
247
247
248
248
match delegee {
249
249
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 ( ) ) ? ;
251
251
let source: ast:: Trait = in_file. value ;
252
252
253
253
delegate = make:: impl_trait (
@@ -293,15 +293,15 @@ fn generate_impl(
293
293
None => { }
294
294
} ;
295
295
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 ( ) ) ? ;
298
298
299
299
let transform =
300
300
PathTransform :: trait_impl ( & target, & source, delegee. 0 , delegate. clone ( ) ) ;
301
301
transform. apply ( & delegate. syntax ( ) ) ;
302
302
}
303
303
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 ( ) ) ? ;
305
305
source = in_file. value ;
306
306
delegate = make:: impl_trait (
307
307
delegee. 0 . is_unsafe ( db) ,
@@ -341,16 +341,16 @@ fn generate_impl(
341
341
}
342
342
} ) ;
343
343
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 ( ) ) ? ;
346
346
347
347
let transform =
348
348
PathTransform :: trait_impl ( & target, & source, delegee. 0 , delegate. clone ( ) ) ;
349
349
transform. apply ( & delegate. syntax ( ) ) ;
350
350
}
351
351
}
352
352
353
- delegate
353
+ Some ( delegate)
354
354
}
355
355
356
356
fn process_assoc_item (
@@ -359,19 +359,19 @@ fn process_assoc_item(
359
359
base_name : & str ,
360
360
) -> Option < ast:: AssocItem > {
361
361
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) ,
364
364
AssocItem :: MacroCall ( _) => {
365
365
// FIXME : Handle MacroCall case.
366
- // return Some( macro_assoc_item(mac, qual_path_ty));
366
+ // macro_assoc_item(mac, qual_path_ty)
367
367
None
368
368
}
369
- AssocItem :: TypeAlias ( ta) => Some ( ty_assoc_item ( ta, qual_path_ty) ) ,
369
+ AssocItem :: TypeAlias ( ta) => ty_assoc_item ( ta, qual_path_ty) ,
370
370
}
371
371
}
372
372
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 ( ) ) ;
375
375
376
376
// We want rhs of the const assignment to be a qualified path
377
377
// 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
380
380
// FIXME : We can't rely on `make::path_qualified` for now but it would be nice to replace the following with it.
381
381
// make::path_qualified(qual_path_ty, path_expr_segment.as_single_segment().unwrap());
382
382
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 ( ) ;
390
386
391
- AssocItem :: Const ( inner)
387
+ Some ( AssocItem :: Const ( inner) )
392
388
}
393
389
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 ( ) ) ;
396
396
let qualpath = qualpath ( qual_path_ty, path_expr_segment) ;
397
397
398
398
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) -
415
415
if param_count > 0 {
416
416
// Add SelfParam and a TOKEN::COMMA
417
417
ted:: insert_all (
418
- Position :: after ( args. l_paren_token ( ) . unwrap ( ) ) ,
418
+ Position :: after ( args. l_paren_token ( ) ? ) ,
419
419
vec ! [
420
420
NodeOrToken :: Node ( tail_expr_self. syntax( ) . clone_for_update( ) ) ,
421
421
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) -
425
425
} else {
426
426
// Add SelfParam only
427
427
ted:: insert (
428
- Position :: after ( args. l_paren_token ( ) . unwrap ( ) ) ,
428
+ Position :: after ( args. l_paren_token ( ) ? ) ,
429
429
NodeOrToken :: Node ( tail_expr_self. syntax ( ) . clone_for_update ( ) ) ,
430
430
) ;
431
431
}
@@ -444,10 +444,10 @@ fn func_assoc_item(item: syntax::ast::Fn, qual_path_ty: Path, base_name: &str) -
444
444
let body = make:: block_expr ( vec ! [ ] , Some ( call) ) . clone_for_update ( ) ;
445
445
let func = make:: fn_ (
446
446
item. visibility ( ) ,
447
- item. name ( ) . unwrap ( ) ,
447
+ item. name ( ) ? ,
448
448
item. generic_param_list ( ) ,
449
449
item. where_clause ( ) ,
450
- item. param_list ( ) . unwrap ( ) ,
450
+ item. param_list ( ) ? ,
451
451
body,
452
452
item. ret_type ( ) ,
453
453
item. async_token ( ) . is_some ( ) ,
@@ -456,14 +456,14 @@ fn func_assoc_item(item: syntax::ast::Fn, qual_path_ty: Path, base_name: &str) -
456
456
)
457
457
. clone_for_update ( ) ;
458
458
459
- AssocItem :: Fn ( func. indent ( edit:: IndentLevel ( 1 ) ) . clone_for_update ( ) )
459
+ Some ( AssocItem :: Fn ( func. indent ( edit:: IndentLevel ( 1 ) ) . clone_for_update ( ) ) )
460
460
}
461
461
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 ( ) ) ;
464
464
let qualpath = qualpath ( qual_path_ty, path_expr_segment) ;
465
465
let ty = make:: ty_path ( qualpath) ;
466
- let ident = item. name ( ) . unwrap ( ) . to_string ( ) ;
466
+ let ident = item. name ( ) ? . to_string ( ) ;
467
467
468
468
let alias = make:: ty_alias (
469
469
ident. as_str ( ) ,
@@ -474,7 +474,7 @@ fn ty_assoc_item(item: syntax::ast::TypeAlias, qual_path_ty: Path) -> AssocItem
474
474
)
475
475
. clone_for_update ( ) ;
476
476
477
- AssocItem :: TypeAlias ( alias)
477
+ Some ( AssocItem :: TypeAlias ( alias) )
478
478
}
479
479
480
480
fn qualpath ( qual_path_ty : ast:: Path , path_expr_seg : ast:: Path ) -> ast:: Path {
0 commit comments