File tree Expand file tree Collapse file tree 2 files changed +21
-4
lines changed Expand file tree Collapse file tree 2 files changed +21
-4
lines changed Original file line number Diff line number Diff line change @@ -1357,10 +1357,10 @@ fn replace_types<'tcx>(
13571357 && let Some ( term_ty) = projection_predicate. term . ty ( )
13581358 && let ty:: Param ( term_param_ty) = term_ty. kind ( )
13591359 {
1360- let item_def_id = projection_predicate . projection_ty . def_id ;
1361- let assoc_item = cx . tcx . associated_item ( item_def_id ) ;
1362- let projection = cx. tcx
1363- . mk_projection ( assoc_item . def_id , cx . tcx . mk_substs_trait ( new_ty , [ ] ) ) ;
1360+ let projection = cx . tcx . mk_ty_from_kind ( ty :: Alias (
1361+ ty :: Projection ,
1362+ projection_predicate . projection_ty . with_self_ty ( cx. tcx , new_ty ) ,
1363+ ) ) ;
13641364
13651365 if let Ok ( projected_ty) = cx. tcx . try_normalize_erasing_regions ( cx. param_env , projection)
13661366 && substs[ term_param_ty. index as usize ] != ty:: GenericArg :: from ( projected_ty)
Original file line number Diff line number Diff line change 1+ #![ allow( dead_code) ]
2+
3+ struct Foo ;
4+
5+ impl < ' a > std:: convert:: TryFrom < & ' a String > for Foo {
6+ type Error = std:: convert:: Infallible ;
7+
8+ fn try_from ( _: & ' a String ) -> Result < Self , Self :: Error > {
9+ Ok ( Foo )
10+ }
11+ }
12+
13+ fn find < E > ( _: impl std:: convert:: TryInto < Foo , Error = E > ) { }
14+
15+ fn main ( ) {
16+ find ( & String :: new ( ) ) ;
17+ }
You can’t perform that action at this time.
0 commit comments