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>(
412412 // they were optional (e.g. paths inside expressions).
413413 let mut type_substs = if param_mode == PathParamMode :: Optional &&
414414 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+
415429 let mut substs = region_substs. clone ( ) ;
416430
417431 ty_param_defs
418432 . 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) )
430435 . collect ( )
431436 } else {
432437 types_provided
You can’t perform that action at this time.
0 commit comments