| error[E0283]: type annotations needed | 
 |   --> $DIR/auto-trait-selection.rs:15:16 | 
 |    | | 
 | LL |     if false { is_trait(foo()) } else { Default::default() } | 
 |    |                ^^^^^^^^ ----- type must be known at this point | 
 |    |                | | 
 |    |                cannot infer type of the type parameter `U` declared on the function `is_trait` | 
 |    | | 
 | note: multiple `impl`s satisfying `impl Sized: Trait<_>` found | 
 |   --> $DIR/auto-trait-selection.rs:12:1 | 
 |    | | 
 | LL | impl<T: Send> Trait<u32> for T {} | 
 |    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | LL | impl<T> Trait<i32> for T {} | 
 |    | ^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | note: required by a bound in `is_trait` | 
 |   --> $DIR/auto-trait-selection.rs:7:16 | 
 |    | | 
 | LL | fn is_trait<T: Trait<U>, U: Default>(_: T) -> U { | 
 |    |                ^^^^^^^^ required by this bound in `is_trait` | 
 | help: consider specifying the generic arguments | 
 |    | | 
 | LL |     if false { is_trait::<_, U>(foo()) } else { Default::default() } | 
 |    |                        ++++++++ | 
 |  | 
 | error: aborting due to 1 previous error | 
 |  | 
 | For more information about this error, try `rustc --explain E0283`. |