@@ -1309,13 +1309,13 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
13091309 } ;
13101310
13111311 if obligation. predicate . skip_binder ( ) . self_ty ( ) . is_ty_var ( ) {
1312- // FIXME(#20297): Self is a type variable (e.g. `_: AsRef<str>`).
1312+ // Self is a type variable (e.g. `_: AsRef<str>`).
13131313 //
13141314 // This is somewhat problematic, as the current scheme can't really
13151315 // handle it turning to be a projection. This does end up as truly
13161316 // ambiguous in most cases anyway.
13171317 //
1318- // Until this is fixed, take the fast path out - this also improves
1318+ // Take the fast path out - this also improves
13191319 // performance by preventing assemble_candidates_from_impls from
13201320 // matching every impl for this trait.
13211321 return Ok ( SelectionCandidateSet { vec : vec ! [ ] , ambiguous : true } ) ;
@@ -1383,8 +1383,6 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
13831383 {
13841384 debug ! ( "assemble_candidates_for_projected_tys({:?})" , obligation) ;
13851385
1386- // FIXME(#20297) -- just examining the self-type is very simplistic
1387-
13881386 // before we go into the whole skolemization thing, just
13891387 // quickly check if the self-type is a projection at all.
13901388 match obligation. predicate . 0 . trait_ref . self_ty ( ) . sty {
@@ -2174,14 +2172,6 @@ impl<'cx, 'gcx, 'tcx> SelectionContext<'cx, 'gcx, 'tcx> {
21742172 }
21752173
21762174 ty:: TyClosure ( def_id, ref substs) => {
2177- // FIXME(#27086). We are invariant w/r/t our
2178- // func_substs, but we don't see them as
2179- // constituent types; this seems RIGHT but also like
2180- // something that a normal type couldn't simulate. Is
2181- // this just a gap with the way that PhantomData and
2182- // OIBIT interact? That is, there is no way to say
2183- // "make me invariant with respect to this TYPE, but
2184- // do not act as though I can reach it"
21852175 substs. upvar_tys ( def_id, self . tcx ( ) ) . collect ( )
21862176 }
21872177
0 commit comments