Skip to content

Do not ICE when closure is involved in Trait Alias Impl Trait #83954

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion compiler/rustc_trait_selection/src/traits/coherence.rs
Original file line number Diff line number Diff line change
Expand Up @@ -586,6 +586,11 @@ fn ty_is_local_constructor(ty: Ty<'_>, in_crate: InCrate) -> bool {
false
}

ty::Closure(..) => {
// Similar to the `Opaque` case (#83613).
false
}

ty::Dynamic(ref tt, ..) => {
if let Some(principal) = tt.principal() {
def_id_is_local(principal.def_id(), in_crate)
Expand All @@ -596,7 +601,7 @@ fn ty_is_local_constructor(ty: Ty<'_>, in_crate: InCrate) -> bool {

ty::Error(_) => true,

ty::Closure(..) | ty::Generator(..) | ty::GeneratorWitness(..) => {
ty::Generator(..) | ty::GeneratorWitness(..) => {
bug!("ty_is_local invoked on unexpected type: {:?}", ty)
}
}
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_trait_selection/src/traits/specialize/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -395,14 +395,14 @@ fn report_conflicting_impls(
// that's passed in.
let decorate = |err: LintDiagnosticBuilder<'_>| {
let msg = format!(
"conflicting implementations of trait `{}`{}:{}",
"conflicting implementations of trait `{}`{}{}",
overlap.trait_desc,
overlap
.self_desc
.clone()
.map_or_else(String::new, |ty| { format!(" for type `{}`", ty) }),
match used_to_be_allowed {
Some(FutureCompatOverlapErrorKind::Issue33140) => " (E0119)",
Some(FutureCompatOverlapErrorKind::Issue33140) => ": (E0119)",
_ => "",
}
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `IntoCow<'_, _>` for type `Cow<'_, _>`:
error[E0119]: conflicting implementations of trait `IntoCow<'_, _>` for type `Cow<'_, _>`
--> $DIR/associated-types-coherence-failure.rs:21:1
|
LL | impl<'a, B: ?Sized> IntoCow<'a, B> for <B as ToOwned>::Owned where B: ToOwned {
Expand All @@ -7,7 +7,7 @@ LL | impl<'a, B: ?Sized> IntoCow<'a, B> for <B as ToOwned>::Owned where B: ToOwn
LL | impl<'a, B: ?Sized> IntoCow<'a, B> for Cow<'a, B> where B: ToOwned {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Cow<'_, _>`

error[E0119]: conflicting implementations of trait `IntoCow<'_, _>` for type `&_`:
error[E0119]: conflicting implementations of trait `IntoCow<'_, _>` for type `&_`
--> $DIR/associated-types-coherence-failure.rs:28:1
|
LL | impl<'a, B: ?Sized> IntoCow<'a, B> for <B as ToOwned>::Owned where B: ToOwned {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/async-await/issue-67651.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `From` for type `()`:
error[E0119]: conflicting implementations of trait `From` for type `()`
--> $DIR/issue-67651.rs:11:1
|
LL | impl From for () {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait`:
error[E0119]: conflicting implementations of trait `MyTrait`
--> $DIR/coherence-blanket-conflicts-with-blanket-implemented.rs:24:1
|
LL | impl<T:Even> MyTrait for T {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait`:
error[E0119]: conflicting implementations of trait `MyTrait`
--> $DIR/coherence-blanket-conflicts-with-blanket-unimplemented.rs:20:1
|
LL | impl<T:Even> MyTrait for T {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `go_trait::GoMut` for type `MyThingy`:
error[E0119]: conflicting implementations of trait `go_trait::GoMut` for type `MyThingy`
--> $DIR/coherence-blanket-conflicts-with-specific-cross-crate.rs:15:1
|
LL | impl GoMut for MyThingy {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait<MyType>` for type `MyType`:
error[E0119]: conflicting implementations of trait `MyTrait<MyType>` for type `MyType`
--> $DIR/coherence-blanket-conflicts-with-specific-multidispatch.rs:22:1
|
LL | impl<T> MyTrait<T> for T {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait` for type `MyType`:
error[E0119]: conflicting implementations of trait `MyTrait` for type `MyType`
--> $DIR/coherence-blanket-conflicts-with-specific-trait.rs:20:1
|
LL | impl<T:OtherTrait> MyTrait for T {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait` for type `MyType`:
error[E0119]: conflicting implementations of trait `MyTrait` for type `MyType`
--> $DIR/coherence-blanket-conflicts-with-specific.rs:19:1
|
LL | impl<T> MyTrait for T {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ LL |
LL | impl<T: MyTrait> !Send for TestType<T> {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ negative implementation here

error[E0119]: conflicting implementations of trait `std::marker::Send` for type `TestType<_>`:
error[E0119]: conflicting implementations of trait `std::marker::Send` for type `TestType<_>`
--> $DIR/coherence-conflicting-negative-trait-impl.rs:13:1
|
LL | unsafe impl<T: MyTrait + 'static> Send for TestType<T> {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `trait_impl_conflict::Foo` for type `isize`:
error[E0119]: conflicting implementations of trait `trait_impl_conflict::Foo` for type `isize`
--> $DIR/coherence-cross-crate-conflict.rs:9:1
|
LL | impl<A> Foo for A {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `Trait` for type `for<'r> fn(fn(&'r ()))`:
error[E0119]: conflicting implementations of trait `Trait` for type `for<'r> fn(fn(&'r ()))`
--> $DIR/coherence-fn-covariant-bound-vs-static.rs:17:1
|
LL | impl Trait for for<'r> fn(fn(&'r ())) {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-fn-implied-bounds.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: conflicting implementations of trait `Trait` for type `for<'a, 'b> fn(&'a &'b u32, &'b &'a u32) -> &'b u32`:
error: conflicting implementations of trait `Trait` for type `for<'a, 'b> fn(&'a &'b u32, &'b &'a u32) -> &'b u32`
--> $DIR/coherence-fn-implied-bounds.rs:21:1
|
LL | impl Trait for for<'a, 'b> fn(&'a &'b u32, &'b &'a u32) -> &'b u32 {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-fn-inputs.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `Trait` for type `for<'a, 'b> fn(&'a u32, &'b u32)`:
error[E0119]: conflicting implementations of trait `Trait` for type `for<'a, 'b> fn(&'a u32, &'b u32)`
--> $DIR/coherence-fn-inputs.rs:15:1
|
LL | impl Trait for for<'a, 'b> fn(&'a u32, &'b u32) {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: conflicting implementations of trait `TheTrait` for type `fn(&u8)`:
error: conflicting implementations of trait `TheTrait` for type `fn(&u8)`
--> $DIR/coherence-free-vs-bound-region.rs:16:1
|
LL | impl<'a> TheTrait for fn(&'a u8) {}
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui/coherence/coherence-impls-copy.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `i32`:
error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `i32`
--> $DIR/coherence-impls-copy.rs:5:1
|
LL | impl Copy for i32 {}
Expand All @@ -7,7 +7,7 @@ LL | impl Copy for i32 {}
= note: conflicting implementation in crate `core`:
- impl Copy for i32;

error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `&NotSync`:
error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `&NotSync`
--> $DIR/coherence-impls-copy.rs:29:1
|
LL | impl Copy for &'static NotSync {}
Expand All @@ -17,7 +17,7 @@ LL | impl Copy for &'static NotSync {}
- impl<T> Copy for &T
where T: ?Sized;

error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `&[NotSync]`:
error[E0119]: conflicting implementations of trait `std::marker::Copy` for type `&[NotSync]`
--> $DIR/coherence-impls-copy.rs:34:1
|
LL | impl Copy for &'static [NotSync] {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-impls-send.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `std::marker::Send` for type `&[NotSync]`:
error[E0119]: conflicting implementations of trait `std::marker::Send` for type `&[NotSync]`
--> $DIR/coherence-impls-send.rs:25:1
|
LL | unsafe impl Send for &'static [NotSync] {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait`:
error[E0119]: conflicting implementations of trait `MyTrait`
--> $DIR/coherence-no-direct-lifetime-dispatch.rs:6:1
|
LL | impl<T> MyTrait for T {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `From<(_,)>` for type `(_,)`:
error[E0119]: conflicting implementations of trait `From<(_,)>` for type `(_,)`
--> $DIR/coherence-overlap-all-t-and-tuple.rs:16:1
|
LL | impl <T> From<T> for T {
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/coherence/coherence-overlap-downstream.stderr
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
error[E0119]: conflicting implementations of trait `Sweet`:
error[E0119]: conflicting implementations of trait `Sweet`
--> $DIR/coherence-overlap-downstream.rs:8:1
|
LL | impl<T:Sugar> Sweet for T { }
| ------------------------- first implementation here
LL | impl<T:Fruit> Sweet for T { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation

error[E0119]: conflicting implementations of trait `Foo<_>` for type `i32`:
error[E0119]: conflicting implementations of trait `Foo<_>` for type `i32`
--> $DIR/coherence-overlap-downstream.rs:14:1
|
LL | impl<X, T> Foo<X> for T where T: Bar<X> {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-overlap-issue-23516.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `Sweet` for type `std::boxed::Box<_>`:
error[E0119]: conflicting implementations of trait `Sweet` for type `std::boxed::Box<_>`
--> $DIR/coherence-overlap-issue-23516.rs:8:1
|
LL | impl<T:Sugar> Sweet for T { }
Expand Down
10 changes: 5 additions & 5 deletions src/test/ui/coherence/coherence-overlap-messages.stderr
Original file line number Diff line number Diff line change
@@ -1,36 +1,36 @@
error[E0119]: conflicting implementations of trait `Foo`:
error[E0119]: conflicting implementations of trait `Foo`
--> $DIR/coherence-overlap-messages.rs:4:1
|
LL | impl<T> Foo for T {}
| ----------------- first implementation here
LL | impl<U> Foo for U {}
| ^^^^^^^^^^^^^^^^^ conflicting implementation

error[E0119]: conflicting implementations of trait `Bar` for type `(u8, u8)`:
error[E0119]: conflicting implementations of trait `Bar` for type `(u8, u8)`
--> $DIR/coherence-overlap-messages.rs:11:1
|
LL | impl<T> Bar for (T, u8) {}
| ----------------------- first implementation here
LL | impl<T> Bar for (u8, T) {}
| ^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `(u8, u8)`

error[E0119]: conflicting implementations of trait `Baz<u8>` for type `u8`:
error[E0119]: conflicting implementations of trait `Baz<u8>` for type `u8`
--> $DIR/coherence-overlap-messages.rs:17:1
|
LL | impl<T> Baz<u8> for T {}
| --------------------- first implementation here
LL | impl<T> Baz<T> for u8 {}
| ^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `u8`

error[E0119]: conflicting implementations of trait `Quux<_, _>`:
error[E0119]: conflicting implementations of trait `Quux<_, _>`
--> $DIR/coherence-overlap-messages.rs:23:1
|
LL | impl<T, U, V> Quux<U, V> for T {}
| ------------------------------ first implementation here
LL | impl<T, U> Quux<U, U> for T {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation

error[E0119]: conflicting implementations of trait `Quux<_, _>`:
error[E0119]: conflicting implementations of trait `Quux<_, _>`
--> $DIR/coherence-overlap-messages.rs:25:1
|
LL | impl<T, U, V> Quux<U, V> for T {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-overlap-upstream.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `Foo` for type `i16`:
error[E0119]: conflicting implementations of trait `Foo` for type `i16`
--> $DIR/coherence-overlap-upstream.rs:13:1
|
LL | impl<T> Foo for T where T: Remote {}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `Foo<i32>` for type `i32`:
error[E0119]: conflicting implementations of trait `Foo<i32>` for type `i32`
--> $DIR/coherence-projection-conflict-orphan.rs:16:1
|
LL | impl Foo<i32> for i32 { }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `Foo<_>` for type `std::option::Option<_>`:
error[E0119]: conflicting implementations of trait `Foo<_>` for type `std::option::Option<_>`
--> $DIR/coherence-projection-conflict-ty-param.rs:10:1
|
LL | impl <P, T: Foo<P>> Foo<P> for Option<T> {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-projection-conflict.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `Foo<i32>` for type `i32`:
error[E0119]: conflicting implementations of trait `Foo<i32>` for type `i32`
--> $DIR/coherence-projection-conflict.rs:11:1
|
LL | impl Foo<i32> for i32 { }
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-subtyping.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
warning: conflicting implementations of trait `TheTrait` for type `for<'a, 'b> fn(&'a u8, &'b u8) -> &'a u8`:
warning: conflicting implementations of trait `TheTrait` for type `for<'a, 'b> fn(&'a u8, &'b u8) -> &'a u8`
--> $DIR/coherence-subtyping.rs:15:1
|
LL | impl TheTrait for for<'a, 'b> fn(&'a u8, &'b u8) -> &'a u8 {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-tuple-conflict.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait` for type `(_, _)`:
error[E0119]: conflicting implementations of trait `MyTrait` for type `(_, _)`
--> $DIR/coherence-tuple-conflict.rs:15:1
|
LL | impl<T> MyTrait for (T,T) {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence-wasm-bindgen.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error: conflicting implementations of trait `IntoWasmAbi` for type `&dyn std::ops::Fn(&_) -> _`:
error: conflicting implementations of trait `IntoWasmAbi` for type `&dyn std::ops::Fn(&_) -> _`
--> $DIR/coherence-wasm-bindgen.rs:28:1
|
LL | / impl<'a, 'b, A, R> IntoWasmAbi for &'a (dyn Fn(A) -> R + 'b)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait` for type `lib::MyFundamentalStruct<(MyType,)>`:
error[E0119]: conflicting implementations of trait `MyTrait` for type `lib::MyFundamentalStruct<(MyType,)>`
--> $DIR/coherence_copy_like_err_fundamental_struct_tuple.rs:16:1
|
LL | impl<T: lib::MyCopy> MyTrait for T { }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait` for type `lib::MyStruct<MyType>`:
error[E0119]: conflicting implementations of trait `MyTrait` for type `lib::MyStruct<MyType>`
--> $DIR/coherence_copy_like_err_struct.rs:19:1
|
LL | impl<T: lib::MyCopy> MyTrait for T { }
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/coherence/coherence_copy_like_err_tuple.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait` for type `(MyType,)`:
error[E0119]: conflicting implementations of trait `MyTrait` for type `(MyType,)`
--> $DIR/coherence_copy_like_err_tuple.rs:18:1
|
LL | impl<T: lib::MyCopy> MyTrait for T { }
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/const-generics/issues/issue-64494.min.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ LL | impl<T: Foo> MyTrait for T where Is<{T::VAL == 6}>: True {}
= note: type parameters may not be used in const expressions
= help: use `#![feature(const_generics)]` and `#![feature(const_evaluatable_checked)]` to allow generic const expressions

error[E0119]: conflicting implementations of trait `MyTrait`:
error[E0119]: conflicting implementations of trait `MyTrait`
--> $DIR/issue-64494.rs:18:1
|
LL | impl<T: Foo> MyTrait for T where Is<{T::VAL == 5}>: True {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/error-codes/E0119.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyTrait` for type `Foo`:
error[E0119]: conflicting implementations of trait `MyTrait` for type `Foo`
--> $DIR/E0119.rs:13:1
|
LL | impl<T> MyTrait for T {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/error-codes/e0119/complex-impl.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `complex_impl_support::External` for type `(Q, complex_impl_support::M<'_, '_, '_, std::boxed::Box<_>, _, _>)`:
error[E0119]: conflicting implementations of trait `complex_impl_support::External` for type `(Q, complex_impl_support::M<'_, '_, '_, std::boxed::Box<_>, _, _>)`
--> $DIR/complex-impl.rs:9:1
|
LL | impl<R> External for (Q, R) {}
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui/error-codes/e0119/conflict-with-std.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `std::convert::AsRef<Q>` for type `std::boxed::Box<Q>`:
error[E0119]: conflicting implementations of trait `std::convert::AsRef<Q>` for type `std::boxed::Box<Q>`
--> $DIR/conflict-with-std.rs:5:1
|
LL | impl AsRef<Q> for Box<Q> {
Expand All @@ -8,7 +8,7 @@ LL | impl AsRef<Q> for Box<Q> {
- impl<T, A> AsRef<T> for Box<T, A>
where A: Allocator, T: ?Sized;

error[E0119]: conflicting implementations of trait `std::convert::From<S>` for type `S`:
error[E0119]: conflicting implementations of trait `std::convert::From<S>` for type `S`
--> $DIR/conflict-with-std.rs:12:1
|
LL | impl From<S> for S {
Expand All @@ -17,7 +17,7 @@ LL | impl From<S> for S {
= note: conflicting implementation in crate `core`:
- impl<T> From<T> for T;

error[E0119]: conflicting implementations of trait `std::convert::TryFrom<X>` for type `X`:
error[E0119]: conflicting implementations of trait `std::convert::TryFrom<X>` for type `X`
--> $DIR/conflict-with-std.rs:19:1
|
LL | impl TryFrom<X> for X {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/error-codes/e0119/issue-23563.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `a::LolFrom<&[_]>` for type `LocalType<_>`:
error[E0119]: conflicting implementations of trait `a::LolFrom<&[_]>` for type `LocalType<_>`
--> $DIR/issue-23563.rs:13:1
|
LL | impl<'a, T> LolFrom<&'a [T]> for LocalType<T> {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/error-codes/e0119/issue-27403.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `std::convert::Into<_>` for type `GenX<_>`:
error[E0119]: conflicting implementations of trait `std::convert::Into<_>` for type `GenX<_>`
--> $DIR/issue-27403.rs:5:1
|
LL | impl<S> Into<S> for GenX<S> {
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/error-codes/e0119/issue-28981.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `std::ops::Deref` for type `&_`:
error[E0119]: conflicting implementations of trait `std::ops::Deref` for type `&_`
--> $DIR/issue-28981.rs:5:1
|
LL | impl<Foo> Deref for Foo { }
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/error-codes/e0119/so-37347311.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `std::convert::From<MyError<_>>` for type `MyError<_>`:
error[E0119]: conflicting implementations of trait `std::convert::From<MyError<_>>` for type `MyError<_>`
--> $DIR/so-37347311.rs:11:1
|
LL | impl<S: Storage> From<S::Error> for MyError<S> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `MyMarker`:
error[E0119]: conflicting implementations of trait `MyMarker`
--> $DIR/feature-gate-overlapping_marker_traits.rs:6:1
|
LL | impl<T: Display> MyMarker for T {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/impl-trait/auto-trait.full_tait.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))]
= note: `#[warn(incomplete_features)]` on by default
= note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information

error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`:
error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`
--> $DIR/auto-trait.rs:24:1
|
LL | impl<T: Send> AnotherTrait for T {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/impl-trait/auto-trait.min_tait.stderr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`:
error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`
--> $DIR/auto-trait.rs:24:1
|
LL | impl<T: Send> AnotherTrait for T {}
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/impl-trait/negative-reasoning.full_tait.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))]
= note: `#[warn(incomplete_features)]` on by default
= note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information

error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`:
error[E0119]: conflicting implementations of trait `AnotherTrait` for type `D<impl OpaqueTrait>`
--> $DIR/negative-reasoning.rs:22:1
|
LL | impl<T: std::fmt::Debug> AnotherTrait for T {}
Expand Down
Loading