Skip to content

Commit

Permalink
Treat TAIT equation as always ambiguous in coherence
Browse files Browse the repository at this point in the history
  • Loading branch information
compiler-errors committed Jun 18, 2023
1 parent f28ec85 commit f711c7e
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 deletions.
6 changes: 0 additions & 6 deletions tests/ui/from_over_into_unfixable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,4 @@ impl Into<u8> for ContainsVal {
}
}

type Opaque = impl Sized;
struct IntoOpaque;
impl Into<Opaque> for IntoOpaque {
fn into(self) -> Opaque {}
}

fn main() {}
33 changes: 25 additions & 8 deletions tests/ui/from_over_into_unfixable.stderr
Original file line number Diff line number Diff line change
@@ -1,12 +1,29 @@
error[E0658]: `impl Trait` in type aliases is unstable
--> $DIR/from_over_into_unfixable.rs:35:15
error: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true
--> $DIR/from_over_into_unfixable.rs:11:1
|
LL | type Opaque = impl Sized;
| ^^^^^^^^^^
LL | impl Into<InMacro> for String {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
= help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
= help: replace the `Into` implementation with `From<std::string::String>`
= note: `-D clippy::from-over-into` implied by `-D warnings`

error: aborting due to previous error
error: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true
--> $DIR/from_over_into_unfixable.rs:19:1
|
LL | impl Into<WeirdUpperSelf> for &'static [u8] {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: replace the `Into` implementation with `From<&'static [u8]>`

error: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true
--> $DIR/from_over_into_unfixable.rs:28:1
|
LL | impl Into<u8> for ContainsVal {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= help: `impl From<Local> for Foreign` is allowed by the orphan rules, for more information see
https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence
= help: replace the `Into` implementation with `From<ContainsVal>`

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0658`.

0 comments on commit f711c7e

Please sign in to comment.