Rollup merge of #71420 - RalfJung:specialization-incomplete, r=matthewjasper
Specialization is unsound As discussed in https://github.com/rust-lang/rust/issues/31844#issuecomment-617013949, it might be a good idea to warn users of specialization that the feature they are using is unsound. I also expanded the "incomplete feature" warning to link the user to the tracking issue.
This commit is contained in:
commit
203305d095
|
@ -19,7 +19,7 @@
|
||||||
#![feature(raw)]
|
#![feature(raw)]
|
||||||
#![feature(sort_internals)]
|
#![feature(sort_internals)]
|
||||||
#![feature(slice_partition_at_index)]
|
#![feature(slice_partition_at_index)]
|
||||||
#![feature(specialization)]
|
#![feature(min_specialization)]
|
||||||
#![feature(step_trait)]
|
#![feature(step_trait)]
|
||||||
#![feature(step_trait_ext)]
|
#![feature(step_trait_ext)]
|
||||||
#![feature(str_internals)]
|
#![feature(str_internals)]
|
||||||
|
|
|
@ -596,4 +596,5 @@ pub const INCOMPLETE_FEATURES: &[Symbol] = &[
|
||||||
sym::raw_dylib,
|
sym::raw_dylib,
|
||||||
sym::const_trait_impl,
|
sym::const_trait_impl,
|
||||||
sym::const_trait_bound_opt_out,
|
sym::const_trait_bound_opt_out,
|
||||||
|
sym::specialization,
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// compile-fail
|
// compile-fail
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
pub trait Foo {
|
pub trait Foo {
|
||||||
fn foo();
|
fn foo();
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
//! Tests the interaction of associated type defaults and specialization.
|
//! Tests the interaction of associated type defaults and specialization.
|
||||||
|
|
||||||
#![feature(associated_type_defaults, specialization)]
|
#![feature(associated_type_defaults, specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Tr {
|
trait Tr {
|
||||||
type Ty = u8;
|
type Ty = u8;
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/defaults-specialization.rs:3:38
|
||||||
|
|
|
||||||
|
LL | #![feature(associated_type_defaults, specialization)]
|
||||||
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[warn(incomplete_features)]` on by default
|
||||||
|
= note: see issue #31844 <https://github.com/rust-lang/rust/issues/31844> for more information
|
||||||
|
|
||||||
error[E0053]: method `make` has an incompatible type for trait
|
error[E0053]: method `make` has an incompatible type for trait
|
||||||
--> $DIR/defaults-specialization.rs:18:18
|
--> $DIR/defaults-specialization.rs:19:18
|
||||||
|
|
|
|
||||||
LL | fn make() -> Self::Ty {
|
LL | fn make() -> Self::Ty {
|
||||||
| -------- type in trait
|
| -------- type in trait
|
||||||
|
@ -11,7 +20,7 @@ LL | fn make() -> u8 { 0 }
|
||||||
found fn pointer `fn() -> u8`
|
found fn pointer `fn() -> u8`
|
||||||
|
|
||||||
error[E0053]: method `make` has an incompatible type for trait
|
error[E0053]: method `make` has an incompatible type for trait
|
||||||
--> $DIR/defaults-specialization.rs:34:18
|
--> $DIR/defaults-specialization.rs:35:18
|
||||||
|
|
|
|
||||||
LL | fn make() -> Self::Ty {
|
LL | fn make() -> Self::Ty {
|
||||||
| -------- type in trait
|
| -------- type in trait
|
||||||
|
@ -26,7 +35,7 @@ LL | fn make() -> bool { true }
|
||||||
found fn pointer `fn() -> bool`
|
found fn pointer `fn() -> bool`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/defaults-specialization.rs:9:9
|
--> $DIR/defaults-specialization.rs:10:9
|
||||||
|
|
|
|
||||||
LL | type Ty = u8;
|
LL | type Ty = u8;
|
||||||
| ------------- associated type defaults can't be assumed inside the trait defining them
|
| ------------- associated type defaults can't be assumed inside the trait defining them
|
||||||
|
@ -40,7 +49,7 @@ LL | 0u8
|
||||||
found type `u8`
|
found type `u8`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/defaults-specialization.rs:25:29
|
--> $DIR/defaults-specialization.rs:26:29
|
||||||
|
|
|
|
||||||
LL | fn make() -> Self::Ty { 0u8 }
|
LL | fn make() -> Self::Ty { 0u8 }
|
||||||
| -------- ^^^ expected associated type, found `u8`
|
| -------- ^^^ expected associated type, found `u8`
|
||||||
|
@ -53,7 +62,7 @@ LL | fn make() -> Self::Ty { 0u8 }
|
||||||
= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
|
= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/defaults-specialization.rs:43:29
|
--> $DIR/defaults-specialization.rs:44:29
|
||||||
|
|
|
|
||||||
LL | default type Ty = bool;
|
LL | default type Ty = bool;
|
||||||
| ----------------------- expected this associated type
|
| ----------------------- expected this associated type
|
||||||
|
@ -67,7 +76,7 @@ LL | fn make() -> Self::Ty { true }
|
||||||
found type `bool`
|
found type `bool`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/defaults-specialization.rs:86:32
|
--> $DIR/defaults-specialization.rs:87:32
|
||||||
|
|
|
|
||||||
LL | let _: <B<()> as Tr>::Ty = 0u8;
|
LL | let _: <B<()> as Tr>::Ty = 0u8;
|
||||||
| ----------------- ^^^ expected associated type, found `u8`
|
| ----------------- ^^^ expected associated type, found `u8`
|
||||||
|
@ -77,13 +86,13 @@ LL | let _: <B<()> as Tr>::Ty = 0u8;
|
||||||
= note: expected associated type `<B<()> as Tr>::Ty`
|
= note: expected associated type `<B<()> as Tr>::Ty`
|
||||||
found type `u8`
|
found type `u8`
|
||||||
help: a method is available that returns `<B<()> as Tr>::Ty`
|
help: a method is available that returns `<B<()> as Tr>::Ty`
|
||||||
--> $DIR/defaults-specialization.rs:8:5
|
--> $DIR/defaults-specialization.rs:9:5
|
||||||
|
|
|
|
||||||
LL | fn make() -> Self::Ty {
|
LL | fn make() -> Self::Ty {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/defaults-specialization.rs:87:32
|
--> $DIR/defaults-specialization.rs:88:32
|
||||||
|
|
|
|
||||||
LL | let _: <B<()> as Tr>::Ty = true;
|
LL | let _: <B<()> as Tr>::Ty = true;
|
||||||
| ----------------- ^^^^ expected associated type, found `bool`
|
| ----------------- ^^^^ expected associated type, found `bool`
|
||||||
|
@ -93,13 +102,13 @@ LL | let _: <B<()> as Tr>::Ty = true;
|
||||||
= note: expected associated type `<B<()> as Tr>::Ty`
|
= note: expected associated type `<B<()> as Tr>::Ty`
|
||||||
found type `bool`
|
found type `bool`
|
||||||
help: a method is available that returns `<B<()> as Tr>::Ty`
|
help: a method is available that returns `<B<()> as Tr>::Ty`
|
||||||
--> $DIR/defaults-specialization.rs:8:5
|
--> $DIR/defaults-specialization.rs:9:5
|
||||||
|
|
|
|
||||||
LL | fn make() -> Self::Ty {
|
LL | fn make() -> Self::Ty {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/defaults-specialization.rs:88:33
|
--> $DIR/defaults-specialization.rs:89:33
|
||||||
|
|
|
|
||||||
LL | let _: <B2<()> as Tr>::Ty = 0u8;
|
LL | let _: <B2<()> as Tr>::Ty = 0u8;
|
||||||
| ------------------ ^^^ expected associated type, found `u8`
|
| ------------------ ^^^ expected associated type, found `u8`
|
||||||
|
@ -109,13 +118,13 @@ LL | let _: <B2<()> as Tr>::Ty = 0u8;
|
||||||
= note: expected associated type `<B2<()> as Tr>::Ty`
|
= note: expected associated type `<B2<()> as Tr>::Ty`
|
||||||
found type `u8`
|
found type `u8`
|
||||||
help: a method is available that returns `<B2<()> as Tr>::Ty`
|
help: a method is available that returns `<B2<()> as Tr>::Ty`
|
||||||
--> $DIR/defaults-specialization.rs:8:5
|
--> $DIR/defaults-specialization.rs:9:5
|
||||||
|
|
|
|
||||||
LL | fn make() -> Self::Ty {
|
LL | fn make() -> Self::Ty {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/defaults-specialization.rs:89:33
|
--> $DIR/defaults-specialization.rs:90:33
|
||||||
|
|
|
|
||||||
LL | let _: <B2<()> as Tr>::Ty = true;
|
LL | let _: <B2<()> as Tr>::Ty = true;
|
||||||
| ------------------ ^^^^ expected associated type, found `bool`
|
| ------------------ ^^^^ expected associated type, found `bool`
|
||||||
|
@ -125,12 +134,12 @@ LL | let _: <B2<()> as Tr>::Ty = true;
|
||||||
= note: expected associated type `<B2<()> as Tr>::Ty`
|
= note: expected associated type `<B2<()> as Tr>::Ty`
|
||||||
found type `bool`
|
found type `bool`
|
||||||
help: a method is available that returns `<B2<()> as Tr>::Ty`
|
help: a method is available that returns `<B2<()> as Tr>::Ty`
|
||||||
--> $DIR/defaults-specialization.rs:8:5
|
--> $DIR/defaults-specialization.rs:9:5
|
||||||
|
|
|
|
||||||
LL | fn make() -> Self::Ty {
|
LL | fn make() -> Self::Ty {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
| ^^^^^^^^^^^^^^^^^^^^^ consider calling `Tr::make`
|
||||||
|
|
||||||
error: aborting due to 9 previous errors
|
error: aborting due to 9 previous errors; 1 warning emitted
|
||||||
|
|
||||||
Some errors have detailed explanations: E0053, E0308.
|
Some errors have detailed explanations: E0053, E0308.
|
||||||
For more information about an error, try `rustc --explain E0053`.
|
For more information about an error, try `rustc --explain E0053`.
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
//
|
//
|
||||||
// No we expect to run into a more user-friendly cycle error instead.
|
// No we expect to run into a more user-friendly cycle error instead.
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Trait<T> { type Assoc; }
|
trait Trait<T> { type Assoc; }
|
||||||
//~^ ERROR E0391
|
//~^ ERROR E0391
|
||||||
|
|
|
@ -1,16 +1,25 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/coherence-inherited-assoc-ty-cycle-err.rs:6: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
|
||||||
|
|
||||||
error[E0391]: cycle detected when building specialization graph of trait `Trait`
|
error[E0391]: cycle detected when building specialization graph of trait `Trait`
|
||||||
--> $DIR/coherence-inherited-assoc-ty-cycle-err.rs:8:1
|
--> $DIR/coherence-inherited-assoc-ty-cycle-err.rs:9:1
|
||||||
|
|
|
|
||||||
LL | trait Trait<T> { type Assoc; }
|
LL | trait Trait<T> { type Assoc; }
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: ...which again requires building specialization graph of trait `Trait`, completing the cycle
|
= note: ...which again requires building specialization graph of trait `Trait`, completing the cycle
|
||||||
note: cycle used when coherence checking all impls of trait `Trait`
|
note: cycle used when coherence checking all impls of trait `Trait`
|
||||||
--> $DIR/coherence-inherited-assoc-ty-cycle-err.rs:8:1
|
--> $DIR/coherence-inherited-assoc-ty-cycle-err.rs:9:1
|
||||||
|
|
|
|
||||||
LL | trait Trait<T> { type Assoc; }
|
LL | trait Trait<T> { type Assoc; }
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0391`.
|
For more information about this error, try `rustc --explain E0391`.
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
// Tests that specialization does not cause optimizations running on polymorphic MIR to resolve
|
// Tests that specialization does not cause optimizations running on polymorphic MIR to resolve
|
||||||
// to a `default` implementation.
|
// to a `default` implementation.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Marker {}
|
trait Marker {}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/trait_specialization.rs:8: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait SpaceLlama {
|
trait SpaceLlama {
|
||||||
fn fly(&self);
|
fn fly(&self);
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/E0520.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
|
||||||
|
|
||||||
error[E0520]: `fly` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `fly` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/E0520.rs:16:5
|
--> $DIR/E0520.rs:17:5
|
||||||
|
|
|
|
||||||
LL | / impl<T: Clone> SpaceLlama for T {
|
LL | / impl<T: Clone> SpaceLlama for T {
|
||||||
LL | | fn fly(&self) {}
|
LL | | fn fly(&self) {}
|
||||||
|
@ -11,6 +20,6 @@ LL | default fn fly(&self) {}
|
||||||
|
|
|
|
||||||
= note: to specialize, `fly` in the parent `impl` must be marked `default`
|
= note: to specialize, `fly` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0520`.
|
For more information about this error, try `rustc --explain E0520`.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo: std::fmt::Debug + Eq {}
|
trait Foo: std::fmt::Debug + Eq {}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/equality-rpass.rs:3: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo: Copy + ToString {}
|
trait Foo: Copy + ToString {}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
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
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/equality.rs:15:5
|
--> $DIR/equality.rs:15:5
|
||||||
|
|
|
|
||||||
|
@ -24,7 +33,7 @@ LL | n + sum_to(n - 1)
|
||||||
|
|
|
|
||||||
= help: the trait `std::ops::Add<impl Foo>` is not implemented for `u32`
|
= help: the trait `std::ops::Add<impl Foo>` is not implemented for `u32`
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors; 1 warning emitted
|
||||||
|
|
||||||
Some errors have detailed explanations: E0277, E0308.
|
Some errors have detailed explanations: E0277, E0308.
|
||||||
For more information about an error, try `rustc --explain E0277`.
|
For more information about an error, try `rustc --explain E0277`.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo: Copy + ToString {}
|
trait Foo: Copy + ToString {}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/equality2.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
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/equality2.rs:25:18
|
--> $DIR/equality2.rs:25:18
|
||||||
|
|
|
|
||||||
|
@ -58,6 +67,6 @@ LL | x.0);
|
||||||
= note: expected opaque type `impl Foo` (`i32`)
|
= note: expected opaque type `impl Foo` (`i32`)
|
||||||
found opaque type `impl Foo` (`u32`)
|
found opaque type `impl Foo` (`u32`)
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0308`.
|
For more information about this error, try `rustc --explain E0308`.
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// check-pass
|
// check-pass
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-35376.rs:2: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Iterate<'a> {
|
trait Iterate<'a> {
|
||||||
type Ty: Valid;
|
type Ty: Valid;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-38091.rs:2: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
pub trait Foo {
|
pub trait Foo {
|
||||||
fn abc() -> u32;
|
fn abc() -> u32;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-55380.rs:2: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(marker_trait_attr)]
|
#![feature(marker_trait_attr)]
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
#[marker]
|
#[marker]
|
||||||
trait MyMarker {}
|
trait MyMarker {}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/overlap-doesnt-conflict-with-specialization.rs:4: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// Semantically, we do not allow e.g., `static X: u8 = 0;` as an associated item.
|
// Semantically, we do not allow e.g., `static X: u8 = 0;` as an associated item.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:9:5
|
--> $DIR/assoc-static-semantic-fail.rs:10:5
|
||||||
|
|
|
|
||||||
LL | static IA: u8 = 0;
|
LL | static IA: u8 = 0;
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:11:5
|
--> $DIR/assoc-static-semantic-fail.rs:12:5
|
||||||
|
|
|
|
||||||
LL | static IB: u8;
|
LL | static IB: u8;
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a static item cannot be `default`
|
error: a static item cannot be `default`
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:14:5
|
--> $DIR/assoc-static-semantic-fail.rs:15:5
|
||||||
|
|
|
|
||||||
LL | default static IC: u8 = 0;
|
LL | default static IC: u8 = 0;
|
||||||
| ^^^^^^^ `default` because of this
|
| ^^^^^^^ `default` because of this
|
||||||
|
@ -19,13 +19,13 @@ LL | default static IC: u8 = 0;
|
||||||
= note: only associated `fn`, `const`, and `type` items can be `default`
|
= note: only associated `fn`, `const`, and `type` items can be `default`
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:14:5
|
--> $DIR/assoc-static-semantic-fail.rs:15:5
|
||||||
|
|
|
|
||||||
LL | default static IC: u8 = 0;
|
LL | default static IC: u8 = 0;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a static item cannot be `default`
|
error: a static item cannot be `default`
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:17:16
|
--> $DIR/assoc-static-semantic-fail.rs:18:16
|
||||||
|
|
|
|
||||||
LL | pub(crate) default static ID: u8;
|
LL | pub(crate) default static ID: u8;
|
||||||
| ^^^^^^^ `default` because of this
|
| ^^^^^^^ `default` because of this
|
||||||
|
@ -33,25 +33,25 @@ LL | pub(crate) default static ID: u8;
|
||||||
= note: only associated `fn`, `const`, and `type` items can be `default`
|
= note: only associated `fn`, `const`, and `type` items can be `default`
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:17:5
|
--> $DIR/assoc-static-semantic-fail.rs:18:5
|
||||||
|
|
|
|
||||||
LL | pub(crate) default static ID: u8;
|
LL | pub(crate) default static ID: u8;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:24:5
|
--> $DIR/assoc-static-semantic-fail.rs:25:5
|
||||||
|
|
|
|
||||||
LL | static TA: u8 = 0;
|
LL | static TA: u8 = 0;
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:26:5
|
--> $DIR/assoc-static-semantic-fail.rs:27:5
|
||||||
|
|
|
|
||||||
LL | static TB: u8;
|
LL | static TB: u8;
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a static item cannot be `default`
|
error: a static item cannot be `default`
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:28:5
|
--> $DIR/assoc-static-semantic-fail.rs:29:5
|
||||||
|
|
|
|
||||||
LL | default static TC: u8 = 0;
|
LL | default static TC: u8 = 0;
|
||||||
| ^^^^^^^ `default` because of this
|
| ^^^^^^^ `default` because of this
|
||||||
|
@ -59,13 +59,13 @@ LL | default static TC: u8 = 0;
|
||||||
= note: only associated `fn`, `const`, and `type` items can be `default`
|
= note: only associated `fn`, `const`, and `type` items can be `default`
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:28:5
|
--> $DIR/assoc-static-semantic-fail.rs:29:5
|
||||||
|
|
|
|
||||||
LL | default static TC: u8 = 0;
|
LL | default static TC: u8 = 0;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a static item cannot be `default`
|
error: a static item cannot be `default`
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:31:16
|
--> $DIR/assoc-static-semantic-fail.rs:32:16
|
||||||
|
|
|
|
||||||
LL | pub(crate) default static TD: u8;
|
LL | pub(crate) default static TD: u8;
|
||||||
| ^^^^^^^ `default` because of this
|
| ^^^^^^^ `default` because of this
|
||||||
|
@ -73,25 +73,25 @@ LL | pub(crate) default static TD: u8;
|
||||||
= note: only associated `fn`, `const`, and `type` items can be `default`
|
= note: only associated `fn`, `const`, and `type` items can be `default`
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:31:5
|
--> $DIR/assoc-static-semantic-fail.rs:32:5
|
||||||
|
|
|
|
||||||
LL | pub(crate) default static TD: u8;
|
LL | pub(crate) default static TD: u8;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:38:5
|
--> $DIR/assoc-static-semantic-fail.rs:39:5
|
||||||
|
|
|
|
||||||
LL | static TA: u8 = 0;
|
LL | static TA: u8 = 0;
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:40:5
|
--> $DIR/assoc-static-semantic-fail.rs:41:5
|
||||||
|
|
|
|
||||||
LL | static TB: u8;
|
LL | static TB: u8;
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a static item cannot be `default`
|
error: a static item cannot be `default`
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:43:5
|
--> $DIR/assoc-static-semantic-fail.rs:44:5
|
||||||
|
|
|
|
||||||
LL | default static TC: u8 = 0;
|
LL | default static TC: u8 = 0;
|
||||||
| ^^^^^^^ `default` because of this
|
| ^^^^^^^ `default` because of this
|
||||||
|
@ -99,13 +99,13 @@ LL | default static TC: u8 = 0;
|
||||||
= note: only associated `fn`, `const`, and `type` items can be `default`
|
= note: only associated `fn`, `const`, and `type` items can be `default`
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:43:5
|
--> $DIR/assoc-static-semantic-fail.rs:44:5
|
||||||
|
|
|
|
||||||
LL | default static TC: u8 = 0;
|
LL | default static TC: u8 = 0;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a static item cannot be `default`
|
error: a static item cannot be `default`
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:46:9
|
--> $DIR/assoc-static-semantic-fail.rs:47:9
|
||||||
|
|
|
|
||||||
LL | pub default static TD: u8;
|
LL | pub default static TD: u8;
|
||||||
| ^^^^^^^ `default` because of this
|
| ^^^^^^^ `default` because of this
|
||||||
|
@ -113,13 +113,13 @@ LL | pub default static TD: u8;
|
||||||
= note: only associated `fn`, `const`, and `type` items can be `default`
|
= note: only associated `fn`, `const`, and `type` items can be `default`
|
||||||
|
|
||||||
error: associated `static` items are not allowed
|
error: associated `static` items are not allowed
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:46:5
|
--> $DIR/assoc-static-semantic-fail.rs:47:5
|
||||||
|
|
|
|
||||||
LL | pub default static TD: u8;
|
LL | pub default static TD: u8;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: associated constant in `impl` without body
|
error: associated constant in `impl` without body
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:11:5
|
--> $DIR/assoc-static-semantic-fail.rs:12:5
|
||||||
|
|
|
|
||||||
LL | static IB: u8;
|
LL | static IB: u8;
|
||||||
| ^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^-
|
||||||
|
@ -127,7 +127,7 @@ LL | static IB: u8;
|
||||||
| help: provide a definition for the constant: `= <expr>;`
|
| help: provide a definition for the constant: `= <expr>;`
|
||||||
|
|
||||||
error: associated constant in `impl` without body
|
error: associated constant in `impl` without body
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:17:5
|
--> $DIR/assoc-static-semantic-fail.rs:18:5
|
||||||
|
|
|
|
||||||
LL | pub(crate) default static ID: u8;
|
LL | pub(crate) default static ID: u8;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-
|
||||||
|
@ -135,13 +135,13 @@ LL | pub(crate) default static ID: u8;
|
||||||
| help: provide a definition for the constant: `= <expr>;`
|
| help: provide a definition for the constant: `= <expr>;`
|
||||||
|
|
||||||
error[E0449]: unnecessary visibility qualifier
|
error[E0449]: unnecessary visibility qualifier
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:31:5
|
--> $DIR/assoc-static-semantic-fail.rs:32:5
|
||||||
|
|
|
|
||||||
LL | pub(crate) default static TD: u8;
|
LL | pub(crate) default static TD: u8;
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error: associated constant in `impl` without body
|
error: associated constant in `impl` without body
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:40:5
|
--> $DIR/assoc-static-semantic-fail.rs:41:5
|
||||||
|
|
|
|
||||||
LL | static TB: u8;
|
LL | static TB: u8;
|
||||||
| ^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^-
|
||||||
|
@ -149,7 +149,7 @@ LL | static TB: u8;
|
||||||
| help: provide a definition for the constant: `= <expr>;`
|
| help: provide a definition for the constant: `= <expr>;`
|
||||||
|
|
||||||
error: associated constant in `impl` without body
|
error: associated constant in `impl` without body
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:46:5
|
--> $DIR/assoc-static-semantic-fail.rs:47:5
|
||||||
|
|
|
|
||||||
LL | pub default static TD: u8;
|
LL | pub default static TD: u8;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^-
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^-
|
||||||
|
@ -157,11 +157,20 @@ LL | pub default static TD: u8;
|
||||||
| help: provide a definition for the constant: `= <expr>;`
|
| help: provide a definition for the constant: `= <expr>;`
|
||||||
|
|
||||||
error[E0449]: unnecessary visibility qualifier
|
error[E0449]: unnecessary visibility qualifier
|
||||||
--> $DIR/assoc-static-semantic-fail.rs:46:5
|
--> $DIR/assoc-static-semantic-fail.rs:47:5
|
||||||
|
|
|
|
||||||
LL | pub default static TD: u8;
|
LL | pub default static TD: u8;
|
||||||
| ^^^ `pub` not permitted here because it's implied
|
| ^^^ `pub` not permitted here because it's implied
|
||||||
|
|
||||||
error: aborting due to 24 previous errors
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/assoc-static-semantic-fail.rs:3: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
|
||||||
|
|
||||||
|
error: aborting due to 24 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0449`.
|
For more information about this error, try `rustc --explain E0449`.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// Test successful and unsuccessful parsing of the `default` contextual keyword
|
// Test successful and unsuccessful parsing of the `default` contextual keyword
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
fn foo<T: Default>() -> T;
|
fn foo<T: Default>() -> T;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error: `default` is not followed by an item
|
error: `default` is not followed by an item
|
||||||
--> $DIR/default.rs:22:5
|
--> $DIR/default.rs:23:5
|
||||||
|
|
|
|
||||||
LL | default pub fn foo<T: Default>() -> T { T::default() }
|
LL | default pub fn foo<T: Default>() -> T { T::default() }
|
||||||
| ^^^^^^^ the `default` qualifier
|
| ^^^^^^^ the `default` qualifier
|
||||||
|
@ -7,7 +7,7 @@ LL | default pub fn foo<T: Default>() -> T { T::default() }
|
||||||
= note: only `fn`, `const`, `type`, or `impl` items may be prefixed by `default`
|
= note: only `fn`, `const`, `type`, or `impl` items may be prefixed by `default`
|
||||||
|
|
||||||
error: non-item in item list
|
error: non-item in item list
|
||||||
--> $DIR/default.rs:22:13
|
--> $DIR/default.rs:23:13
|
||||||
|
|
|
|
||||||
LL | impl Foo for u32 {
|
LL | impl Foo for u32 {
|
||||||
| - item list starts here
|
| - item list starts here
|
||||||
|
@ -18,13 +18,22 @@ LL | }
|
||||||
| - item list ends here
|
| - item list ends here
|
||||||
|
|
||||||
error[E0449]: unnecessary visibility qualifier
|
error[E0449]: unnecessary visibility qualifier
|
||||||
--> $DIR/default.rs:16:5
|
--> $DIR/default.rs:17:5
|
||||||
|
|
|
|
||||||
LL | pub default fn foo<T: Default>() -> T {
|
LL | pub default fn foo<T: Default>() -> T {
|
||||||
| ^^^ `pub` not permitted here because it's implied
|
| ^^^ `pub` not permitted here because it's implied
|
||||||
|
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/default.rs:3: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
|
||||||
|
|
||||||
error[E0046]: not all trait items implemented, missing: `foo`
|
error[E0046]: not all trait items implemented, missing: `foo`
|
||||||
--> $DIR/default.rs:21:1
|
--> $DIR/default.rs:22:1
|
||||||
|
|
|
|
||||||
LL | fn foo<T: Default>() -> T;
|
LL | fn foo<T: Default>() -> T;
|
||||||
| -------------------------- `foo` from trait
|
| -------------------------- `foo` from trait
|
||||||
|
@ -32,7 +41,7 @@ LL | fn foo<T: Default>() -> T;
|
||||||
LL | impl Foo for u32 {
|
LL | impl Foo for u32 {
|
||||||
| ^^^^^^^^^^^^^^^^ missing `foo` in implementation
|
| ^^^^^^^^^^^^^^^^ missing `foo` in implementation
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors; 1 warning emitted
|
||||||
|
|
||||||
Some errors have detailed explanations: E0046, E0449.
|
Some errors have detailed explanations: E0046, E0449.
|
||||||
For more information about an error, try `rustc --explain E0046`.
|
For more information about an error, try `rustc --explain E0046`.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
||||||
|
|
|
@ -46,5 +46,14 @@ LL | default fn f2() {}
|
||||||
| |
|
| |
|
||||||
| `default` because of this
|
| `default` because of this
|
||||||
|
|
||||||
error: aborting due to 6 previous errors
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/trait-item-with-defaultness-fail-semantic.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
|
||||||
|
|
||||||
|
error: aborting due to 6 previous errors; 1 warning emitted
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// Make sure we don't crash with a cycle error during coherence.
|
// Make sure we don't crash with a cycle error during coherence.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Trait<T> {
|
trait Trait<T> {
|
||||||
type Assoc;
|
type Assoc;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/assoc-ty-graph-cycle.rs:5: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// aux-build:cross_crates_defaults.rs
|
// aux-build:cross_crates_defaults.rs
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
extern crate cross_crates_defaults;
|
extern crate cross_crates_defaults;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/cross-crate-defaults.rs:5: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
// aux-build:go_trait.rs
|
// aux-build:go_trait.rs
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
extern crate go_trait;
|
extern crate go_trait;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/allowed-cross-crate.rs:8: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// Test that you can list the more specific impl before the more general one.
|
// Test that you can list the more specific impl before the more general one.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
type Out;
|
type Out;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/out-of-order.rs:5: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
// projections involve specialization, so long as the associated type is
|
// projections involve specialization, so long as the associated type is
|
||||||
// provided by the most specialized impl.
|
// provided by the most specialized impl.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Assoc {
|
trait Assoc {
|
||||||
type Output;
|
type Output;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/overlap-projection.rs:7: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Make sure we *can* project non-defaulted associated types
|
// Make sure we *can* project non-defaulted associated types
|
||||||
// cf compile-fail/specialization-default-projection.rs
|
// cf compile-fail/specialization-default-projection.rs
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/projection.rs:4: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Check a number of scenarios in which one impl tries to override another,
|
// Check a number of scenarios in which one impl tries to override another,
|
||||||
// without correctly using `default`.
|
// without correctly using `default`.
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-no-default.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
|
||||||
|
|
||||||
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/specialization-no-default.rs:20:5
|
--> $DIR/specialization-no-default.rs:20:5
|
||||||
|
|
|
|
||||||
|
@ -65,6 +74,6 @@ LL | fn redundant(&self) {}
|
||||||
|
|
|
|
||||||
= note: to specialize, `redundant` in the parent `impl` must be marked `default`
|
= note: to specialize, `redundant` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error: aborting due to 5 previous errors
|
error: aborting due to 5 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0520`.
|
For more information about this error, try `rustc --explain E0520`.
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
// Tests that we can combine a default impl that supplies one method with a
|
// Tests that we can combine a default impl that supplies one method with a
|
||||||
// full impl that supplies the other, and they can invoke one another.
|
// full impl that supplies the other, and they can invoke one another.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
fn foo_one(&self) -> &'static str;
|
fn foo_one(&self) -> &'static str;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-trait-item-not-implemented-rpass.rs:6: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Tests that default impls do not have to supply all items but regular impls do.
|
// Tests that default impls do not have to supply all items but regular impls do.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
fn foo_one(&self) -> &'static str;
|
fn foo_one(&self) -> &'static str;
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-trait-item-not-implemented.rs:3: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
|
||||||
|
|
||||||
error[E0046]: not all trait items implemented, missing: `foo_two`
|
error[E0046]: not all trait items implemented, missing: `foo_two`
|
||||||
--> $DIR/specialization-trait-item-not-implemented.rs:18:1
|
--> $DIR/specialization-trait-item-not-implemented.rs:18:1
|
||||||
|
|
|
|
||||||
|
@ -7,6 +16,6 @@ LL | fn foo_two(&self) -> &'static str;
|
||||||
LL | impl Foo for MyStruct {}
|
LL | impl Foo for MyStruct {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ missing `foo_two` in implementation
|
| ^^^^^^^^^^^^^^^^^^^^^ missing `foo_two` in implementation
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0046`.
|
For more information about this error, try `rustc --explain E0046`.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// - default impls do not have to supply all items and
|
// - default impls do not have to supply all items and
|
||||||
// - a default impl does not count as an impl (in this case, an incomplete default impl).
|
// - a default impl does not count as an impl (in this case, an incomplete default impl).
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
fn foo_one(&self) -> &'static str;
|
fn foo_one(&self) -> &'static str;
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-trait-not-implemented.rs:5: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
|
||||||
|
|
||||||
error[E0599]: no method named `foo_one` found for struct `MyStruct` in the current scope
|
error[E0599]: no method named `foo_one` found for struct `MyStruct` in the current scope
|
||||||
--> $DIR/specialization-trait-not-implemented.rs:22:29
|
--> $DIR/specialization-trait-not-implemented.rs:22:29
|
||||||
|
|
|
|
||||||
|
@ -19,6 +28,6 @@ note: `Foo` defines an item `foo_one`, perhaps you need to implement it
|
||||||
LL | trait Foo {
|
LL | trait Foo {
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0599`.
|
For more information about this error, try `rustc --explain E0599`.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Tests that a default impl still has to have a WF trait ref.
|
// Tests that a default impl still has to have a WF trait ref.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo<'a, T: Eq + 'a> { }
|
trait Foo<'a, T: Eq + 'a> { }
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-wfcheck.rs:3: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
|
||||||
|
|
||||||
error[E0277]: the trait bound `U: std::cmp::Eq` is not satisfied
|
error[E0277]: the trait bound `U: std::cmp::Eq` is not satisfied
|
||||||
--> $DIR/specialization-wfcheck.rs:7:17
|
--> $DIR/specialization-wfcheck.rs:7:17
|
||||||
|
|
|
|
||||||
|
@ -12,6 +21,6 @@ help: consider restricting type parameter `U`
|
||||||
LL | default impl<U: std::cmp::Eq> Foo<'static, U> for () {}
|
LL | default impl<U: std::cmp::Eq> Foo<'static, U> for () {}
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0277`.
|
For more information about this error, try `rustc --explain E0277`.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#![feature(negative_impls)]
|
#![feature(negative_impls)]
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
struct S;
|
struct S;
|
||||||
struct Z;
|
struct Z;
|
||||||
|
|
|
@ -8,6 +8,15 @@ LL | default impl S {}
|
||||||
|
|
|
|
||||||
= note: only trait implementations may be annotated with `default`
|
= note: only trait implementations may be annotated with `default`
|
||||||
|
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/validation.rs:2: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
|
||||||
|
|
||||||
error: impls of auto traits cannot be default
|
error: impls of auto traits cannot be default
|
||||||
--> $DIR/validation.rs:9:21
|
--> $DIR/validation.rs:9:21
|
||||||
|
|
|
|
||||||
|
@ -36,6 +45,6 @@ error[E0750]: negative impls cannot be default impls
|
||||||
LL | default impl !Tr for S {}
|
LL | default impl !Tr for S {}
|
||||||
| ^^^^^^^ ^
|
| ^^^^^^^ ^
|
||||||
|
|
||||||
error: aborting due to 5 previous errors
|
error: aborting due to 5 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0750`.
|
For more information about this error, try `rustc --explain E0750`.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// check-pass
|
// check-pass
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
pub struct Cloned<I>(I);
|
pub struct Cloned<I>(I);
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-36804.rs:2: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Regression test for a specialization-related ICE (#39448).
|
// Regression test for a specialization-related ICE (#39448).
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-39448.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
|
||||||
|
|
||||||
error[E0275]: overflow evaluating the requirement `T: FromA<U>`
|
error[E0275]: overflow evaluating the requirement `T: FromA<U>`
|
||||||
--> $DIR/issue-39448.rs:45:13
|
--> $DIR/issue-39448.rs:45:13
|
||||||
|
|
|
|
||||||
|
@ -7,6 +16,6 @@ LL | x.foo(y.to()).to()
|
||||||
= note: required because of the requirements on the impl of `FromA<U>` for `T`
|
= note: required because of the requirements on the impl of `FromA<U>` for `T`
|
||||||
= note: required because of the requirements on the impl of `ToA<T>` for `U`
|
= note: required because of the requirements on the impl of `ToA<T>` for `U`
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0275`.
|
For more information about this error, try `rustc --explain E0275`.
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
// check-pass
|
// check-pass
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
fn foo(&self);
|
fn foo(&self);
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-39618.rs:7: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
pub trait Foo {
|
pub trait Foo {
|
||||||
fn foo();
|
fn foo();
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-50452.rs:3: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Regression test for #52050: when inserting the blanket impl `I`
|
// Regression test for #52050: when inserting the blanket impl `I`
|
||||||
// into the tree, we had to replace the child node for `Foo`, which
|
// into the tree, we had to replace the child node for `Foo`, which
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-52050.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
|
||||||
|
|
||||||
error[E0119]: conflicting implementations of trait `IntoPyDictPointer` for type `()`:
|
error[E0119]: conflicting implementations of trait `IntoPyDictPointer` for type `()`:
|
||||||
--> $DIR/issue-52050.rs:28:1
|
--> $DIR/issue-52050.rs:28:1
|
||||||
|
|
|
|
||||||
|
@ -13,6 +22,6 @@ LL | impl IntoPyDictPointer for ()
|
||||||
|
|
|
|
||||||
= note: upstream crates may add a new impl of trait `std::iter::Iterator` for type `()` in future versions
|
= note: upstream crates may add a new impl of trait `std::iter::Iterator` for type `()` in future versions
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0119`.
|
For more information about this error, try `rustc --explain E0119`.
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
// check-pass
|
// check-pass
|
||||||
// edition:2018
|
// edition:2018
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-63716-parse-async.rs:7: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// check-pass
|
// check-pass
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/issue-70442.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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#![feature(specialization, associated_type_defaults)]
|
#![feature(specialization, associated_type_defaults)]
|
||||||
|
//~^ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Test that attempting to override a non-default method or one not in the
|
// Test that attempting to override a non-default method or one not in the
|
||||||
// parent impl causes an error.
|
// parent impl causes an error.
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/non-defaulted-item-fail.rs:1:12
|
||||||
|
|
|
||||||
|
LL | #![feature(specialization, associated_type_defaults)]
|
||||||
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: `#[warn(incomplete_features)]` on by default
|
||||||
|
= note: see issue #31844 <https://github.com/rust-lang/rust/issues/31844> for more information
|
||||||
|
|
||||||
error[E0520]: `Ty` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `Ty` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/non-defaulted-item-fail.rs:29:5
|
--> $DIR/non-defaulted-item-fail.rs:30:5
|
||||||
|
|
|
|
||||||
LL | / impl<T> Foo for Box<T> {
|
LL | / impl<T> Foo for Box<T> {
|
||||||
LL | | type Ty = bool;
|
LL | | type Ty = bool;
|
||||||
|
@ -14,7 +23,7 @@ LL | type Ty = Vec<()>;
|
||||||
= note: to specialize, `Ty` in the parent `impl` must be marked `default`
|
= note: to specialize, `Ty` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error[E0520]: `CONST` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `CONST` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/non-defaulted-item-fail.rs:31:5
|
--> $DIR/non-defaulted-item-fail.rs:32:5
|
||||||
|
|
|
|
||||||
LL | / impl<T> Foo for Box<T> {
|
LL | / impl<T> Foo for Box<T> {
|
||||||
LL | | type Ty = bool;
|
LL | | type Ty = bool;
|
||||||
|
@ -29,7 +38,7 @@ LL | const CONST: u8 = 42;
|
||||||
= note: to specialize, `CONST` in the parent `impl` must be marked `default`
|
= note: to specialize, `CONST` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/non-defaulted-item-fail.rs:33:5
|
--> $DIR/non-defaulted-item-fail.rs:34:5
|
||||||
|
|
|
|
||||||
LL | / impl<T> Foo for Box<T> {
|
LL | / impl<T> Foo for Box<T> {
|
||||||
LL | | type Ty = bool;
|
LL | | type Ty = bool;
|
||||||
|
@ -44,7 +53,7 @@ LL | fn foo(&self) -> bool { true }
|
||||||
= note: to specialize, `foo` in the parent `impl` must be marked `default`
|
= note: to specialize, `foo` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error[E0520]: `Ty` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `Ty` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/non-defaulted-item-fail.rs:45:5
|
--> $DIR/non-defaulted-item-fail.rs:46:5
|
||||||
|
|
|
|
||||||
LL | impl<T> Foo for Vec<T> {}
|
LL | impl<T> Foo for Vec<T> {}
|
||||||
| ------------------------- parent `impl` is here
|
| ------------------------- parent `impl` is here
|
||||||
|
@ -55,7 +64,7 @@ LL | type Ty = Vec<()>;
|
||||||
= note: to specialize, `Ty` in the parent `impl` must be marked `default`
|
= note: to specialize, `Ty` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error[E0520]: `CONST` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `CONST` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/non-defaulted-item-fail.rs:47:5
|
--> $DIR/non-defaulted-item-fail.rs:48:5
|
||||||
|
|
|
|
||||||
LL | impl<T> Foo for Vec<T> {}
|
LL | impl<T> Foo for Vec<T> {}
|
||||||
| ------------------------- parent `impl` is here
|
| ------------------------- parent `impl` is here
|
||||||
|
@ -66,7 +75,7 @@ LL | const CONST: u8 = 42;
|
||||||
= note: to specialize, `CONST` in the parent `impl` must be marked `default`
|
= note: to specialize, `CONST` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/non-defaulted-item-fail.rs:49:5
|
--> $DIR/non-defaulted-item-fail.rs:50:5
|
||||||
|
|
|
|
||||||
LL | impl<T> Foo for Vec<T> {}
|
LL | impl<T> Foo for Vec<T> {}
|
||||||
| ------------------------- parent `impl` is here
|
| ------------------------- parent `impl` is here
|
||||||
|
@ -76,6 +85,6 @@ LL | fn foo(&self) -> bool { true }
|
||||||
|
|
|
|
||||||
= note: to specialize, `foo` in the parent `impl` must be marked `default`
|
= note: to specialize, `foo` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error: aborting due to 6 previous errors
|
error: aborting due to 6 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0520`.
|
For more information about this error, try `rustc --explain E0520`.
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
// aux-build:go_trait.rs
|
// aux-build:go_trait.rs
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
extern crate go_trait;
|
extern crate go_trait;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-allowed-cross-crate.rs:8: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// Test that non-method associated functions can be specialized
|
// Test that non-method associated functions can be specialized
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
fn mk() -> Self;
|
fn mk() -> Self;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-assoc-fns.rs:5: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Tests a variety of basic specialization scenarios and method
|
// Tests a variety of basic specialization scenarios and method
|
||||||
// dispatch for them.
|
// dispatch for them.
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-basics.rs:3: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// aux-build:specialization_cross_crate.rs
|
// aux-build:specialization_cross_crate.rs
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
extern crate specialization_cross_crate;
|
extern crate specialization_cross_crate;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-cross-crate.rs:5: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Test that default methods are cascaded correctly
|
// Test that default methods are cascaded correctly
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-default-methods.rs:3: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Make sure we can't project defaulted associated types
|
// Make sure we can't project defaulted associated types
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-default-projection.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
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/specialization-default-projection.rs:21:5
|
--> $DIR/specialization-default-projection.rs:21:5
|
||||||
|
|
|
|
||||||
|
@ -28,6 +37,6 @@ LL | generic::<()>()
|
||||||
= help: consider constraining the associated type `<() as Foo>::Assoc` to `()`
|
= help: consider constraining the associated type `<() as Foo>::Assoc` to `()`
|
||||||
= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
|
= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0308`.
|
For more information about this error, try `rustc --explain E0308`.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// associated type in the impl defining it -- otherwise, what happens
|
// associated type in the impl defining it -- otherwise, what happens
|
||||||
// if it's overridden?
|
// if it's overridden?
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Example {
|
trait Example {
|
||||||
type Output;
|
type Output;
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-default-types.rs:5: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
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/specialization-default-types.rs:15:9
|
--> $DIR/specialization-default-types.rs:15:9
|
||||||
|
|
|
|
||||||
|
@ -24,6 +33,6 @@ LL | Example::generate(t)
|
||||||
= help: consider constraining the associated type `<T as Example>::Output` to `std::boxed::Box<T>`
|
= help: consider constraining the associated type `<T as Example>::Output` to `std::boxed::Box<T>`
|
||||||
= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
|
= note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0308`.
|
For more information about this error, try `rustc --explain E0308`.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Check a number of scenarios in which one impl tries to override another,
|
// Check a number of scenarios in which one impl tries to override another,
|
||||||
// without correctly using `default`.
|
// without correctly using `default`.
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-no-default.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
|
||||||
|
|
||||||
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||||
--> $DIR/specialization-no-default.rs:20:5
|
--> $DIR/specialization-no-default.rs:20:5
|
||||||
|
|
|
|
||||||
|
@ -65,6 +74,6 @@ LL | default fn redundant(&self) {}
|
||||||
|
|
|
|
||||||
= note: to specialize, `redundant` in the parent `impl` must be marked `default`
|
= note: to specialize, `redundant` in the parent `impl` must be marked `default`
|
||||||
|
|
||||||
error: aborting due to 5 previous errors
|
error: aborting due to 5 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0520`.
|
For more information about this error, try `rustc --explain E0520`.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// run-pass
|
// run-pass
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Ensure that specialization works for impls defined directly on a projection
|
// Ensure that specialization works for impls defined directly on a projection
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-on-projection.rs:4: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
// Test that you can list the more specific impl before the more general one.
|
// Test that you can list the more specific impl before the more general one.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo {
|
trait Foo {
|
||||||
type Out;
|
type Out;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-out-of-order.rs:5: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#![feature(negative_impls)]
|
#![feature(negative_impls)]
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait MyTrait {}
|
trait MyTrait {}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-overlap-negative.rs:2: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
|
||||||
|
|
||||||
error[E0751]: found both positive and negative implementation of trait `std::marker::Send` for type `TestType<_>`:
|
error[E0751]: found both positive and negative implementation of trait `std::marker::Send` for type `TestType<_>`:
|
||||||
--> $DIR/specialization-overlap-negative.rs:9:1
|
--> $DIR/specialization-overlap-negative.rs:9:1
|
||||||
|
|
|
|
||||||
|
@ -6,6 +15,6 @@ LL | unsafe impl<T: Clone> Send for TestType<T> {}
|
||||||
LL | impl<T: MyTrait> !Send for TestType<T> {}
|
LL | impl<T: MyTrait> !Send for TestType<T> {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ negative implementation here
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ negative implementation here
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0751`.
|
For more information about this error, try `rustc --explain E0751`.
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
// projections involve specialization, so long as the associated type is
|
// projections involve specialization, so long as the associated type is
|
||||||
// provided by the most specialized impl.
|
// provided by the most specialized impl.
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Assoc {
|
trait Assoc {
|
||||||
type Output;
|
type Output;
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-overlap-projection.rs:7: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
|
||||||
|
|
||||||
|
warning: 1 warning emitted
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
trait Foo { fn foo() {} }
|
trait Foo { fn foo() {} }
|
||||||
impl<T: Clone> Foo for T {}
|
impl<T: Clone> Foo for T {}
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-overlap.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
|
||||||
|
|
||||||
error[E0119]: conflicting implementations of trait `Foo` for type `std::vec::Vec<_>`:
|
error[E0119]: conflicting implementations of trait `Foo` for type `std::vec::Vec<_>`:
|
||||||
--> $DIR/specialization-overlap.rs:5:1
|
--> $DIR/specialization-overlap.rs:5:1
|
||||||
|
|
|
|
||||||
|
@ -30,6 +39,6 @@ LL | impl<T: Clone> Qux for T {}
|
||||||
LL | impl<T: Eq> Qux for T {}
|
LL | impl<T: Eq> Qux for T {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
|
| ^^^^^^^^^^^^^^^^^^^^^ conflicting implementation
|
||||||
|
|
||||||
error: aborting due to 4 previous errors
|
error: aborting due to 4 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0119`.
|
For more information about this error, try `rustc --explain E0119`.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#![feature(optin_builtin_traits)]
|
#![feature(optin_builtin_traits)]
|
||||||
#![feature(negative_impls)]
|
#![feature(negative_impls)]
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
auto trait Foo {}
|
auto trait Foo {}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/specialization-polarity.rs:5: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
|
||||||
|
|
||||||
error[E0751]: found both positive and negative implementation of trait `Foo` for type `u8`:
|
error[E0751]: found both positive and negative implementation of trait `Foo` for type `u8`:
|
||||||
--> $DIR/specialization-polarity.rs:10:1
|
--> $DIR/specialization-polarity.rs:10:1
|
||||||
|
|
|
|
||||||
|
@ -14,6 +23,6 @@ LL | impl<T> !Bar for T {}
|
||||||
LL | impl Bar for u8 {}
|
LL | impl Bar for u8 {}
|
||||||
| ^^^^^^^^^^^^^^^ positive implementation here
|
| ^^^^^^^^^^^^^^^ positive implementation here
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors; 1 warning emitted
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0751`.
|
For more information about this error, try `rustc --explain E0751`.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
#![allow(unused_variables)]
|
#![allow(unused_variables)]
|
||||||
|
|
||||||
#![feature(specialization)]
|
#![feature(specialization)] //~ WARN the feature `specialization` is incomplete
|
||||||
|
|
||||||
// Regression test for ICE when combining specialized associated types and type
|
// Regression test for ICE when combining specialized associated types and type
|
||||||
// aliases
|
// aliases
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue