File tree Expand file tree Collapse file tree 1 file changed +16
-11
lines changed Expand file tree Collapse file tree 1 file changed +16
-11
lines changed Original file line number Diff line number Diff line change @@ -412,21 +412,26 @@ fn create_substs_for_ast_path<'tcx>(
412
412
// they were optional (e.g. paths inside expressions).
413
413
let mut type_substs = if param_mode == PathParamMode :: Optional &&
414
414
types_provided. is_empty ( ) {
415
+ fn default_type_parameter < ' tcx > ( p : & ty:: TypeParameterDef < ' tcx > , self_ty : Option < Ty < ' tcx > > )
416
+ -> Option < ty:: TypeParameterDef < ' tcx > >
417
+ {
418
+ if let Some ( ref default) = p. default {
419
+ if self_ty. is_none ( ) && default. has_self_ty ( ) {
420
+ // There is no suitable inference default for a type parameter
421
+ // that references self with no self-type provided.
422
+ return None ;
423
+ }
424
+ }
425
+
426
+ Some ( p. clone ( ) )
427
+ }
428
+
415
429
let mut substs = region_substs. clone ( ) ;
416
430
417
431
ty_param_defs
418
432
. iter ( )
419
- . map ( |p| {
420
- if let Some ( ref default) = p. default {
421
- if self_ty. is_none ( ) && default. has_self_ty ( ) {
422
- // There is no suitable inference default for a type parameter
423
- // that references Self with no self-type provided.
424
- return this. ty_infer ( None , Some ( & mut substs) , Some ( TypeSpace ) , span) ;
425
- }
426
- }
427
-
428
- this. ty_infer ( Some ( p. clone ( ) ) , Some ( & mut substs) , Some ( TypeSpace ) , span)
429
- } )
433
+ . map ( |p| this. ty_infer ( default_type_parameter ( p, self_ty) , Some ( & mut substs) ,
434
+ Some ( TypeSpace ) , span) )
430
435
. collect ( )
431
436
} else {
432
437
types_provided
You can’t perform that action at this time.
0 commit comments