| //@ check-pass |
| //@ compile-flags: -Znext-solver |
| |
| trait Reader: Default { |
| fn read_u8_array<A>(&self) -> Result<A, ()> { |
| todo!() |
| } |
| |
| fn read_u8(&self) -> Result<u8, ()> { |
| let a: [u8; 1] = self.read_u8_array::<_>()?; |
| // This results in a nested `<Result<?0, ()> as Try>::Residual: Sized` goal. |
| // The self type normalizes to `?0`. We previously did not force that to be |
| // ambiguous but instead incompletely applied the `Self: Sized` candidate |
| // from the `ParamEnv`, resulting in a type error. |
| Ok(a[0]) |
| } |
| } |
| |
| fn main() {} |