0f6e06b7c0
by using an opaque type obligation to bubble up comparisons between opaque types and other types Also uses proper obligation causes so that the body id works, because out of some reason nll uses body ids for logic instead of just diagnostics.
52 lines
1.7 KiB
Plaintext
52 lines
1.7 KiB
Plaintext
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
|
--> $DIR/equality.rs:1:12
|
|
|
|
|
LL | #![feature(specialization)]
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
|
= note: `#[warn(incomplete_features)]` on by default
|
|
= note: see issue #31844 <https://github.com/rust-lang/rust/issues/31844> for more information
|
|
= help: consider using `min_specialization` instead, which is more stable and complete
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/equality.rs:15:5
|
|
|
|
|
LL | return 1_i32;
|
|
| ----- type expected due to this
|
|
LL | }
|
|
LL | 0_u32
|
|
| ^^^^^ expected `i32`, found `u32`
|
|
|
|
error[E0277]: cannot add `impl Foo` to `u32`
|
|
--> $DIR/equality.rs:24:11
|
|
|
|
|
LL | n + sum_to(n - 1)
|
|
| ^ no implementation for `u32 + impl Foo`
|
|
|
|
|
= help: the trait `Add<impl Foo>` is not implemented for `u32`
|
|
|
|
error[E0283]: type annotations needed
|
|
--> $DIR/equality.rs:21:5
|
|
|
|
|
LL | / if n == 0 {
|
|
LL | | 0
|
|
LL | | } else {
|
|
LL | | n + sum_to(n - 1)
|
|
LL | |
|
|
LL | | }
|
|
| |_____^ cannot infer type for type `{integer}`
|
|
|
|
|
= note: multiple `impl`s satisfying `{integer}: ToString` found in the `alloc` crate:
|
|
- impl ToString for i8;
|
|
- impl ToString for u8;
|
|
note: required because of the requirements on the impl of `Foo` for `{integer}`
|
|
--> $DIR/equality.rs:5:26
|
|
|
|
|
LL | impl<T: Copy + ToString> Foo for T {}
|
|
| ^^^ ^
|
|
|
|
error: aborting due to 3 previous errors; 1 warning emitted
|
|
|
|
Some errors have detailed explanations: E0277, E0283, E0308.
|
|
For more information about an error, try `rustc --explain E0277`.
|