24 lines
526 B
Rust
24 lines
526 B
Rust
//! This test shows how we fail selection in a way that can influence
|
|
//! selection in a code path that succeeds.
|
|
|
|
//@ revisions: next old
|
|
//@[next] compile-flags: -Znext-solver
|
|
|
|
#![feature(freeze)]
|
|
|
|
use std::marker::Freeze;
|
|
|
|
fn is_trait<T: Trait<U>, U: Default>(_: T) -> U {
|
|
Default::default()
|
|
}
|
|
|
|
trait Trait<T> {}
|
|
impl<T: Freeze> Trait<u32> for T {}
|
|
impl<T> Trait<i32> for T {}
|
|
fn foo() -> impl Sized {
|
|
if false { is_trait(foo()) } else { Default::default() }
|
|
//~^ ERROR: type annotations needed
|
|
}
|
|
|
|
fn main() {}
|