Suggest Upgrading Compiler for Gated Features This PR addresses #117318 I have a few questions: 1. Do we want to specify the current version and release date of the compiler? I have added this in via environment variables, which I found in the code for the rustc cli where it handles the `--version` flag a. How can I handle the changing message in the tests? 3. Do we want to only show this message when the compiler is old? a. How can we determine when the compiler is old? I'll wait until we figure out the message to bless the tests
311 lines
10 KiB
Plaintext
311 lines
10 KiB
Plaintext
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:7:26
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>() {}
|
|
| ^^^^^^
|
|
|
|
|
note: this function is not `const`, so it cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:7:4
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>() {}
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:9:18
|
|
|
|
|
LL | struct Struct<T: ~const Trait> { field: T }
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:10:23
|
|
|
|
|
LL | struct TupleStruct<T: ~const Trait>(T);
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:11:22
|
|
|
|
|
LL | struct UnitStruct<T: ~const Trait>;
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:14:14
|
|
|
|
|
LL | enum Enum<T: ~const Trait> { Variant(T) }
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:16:16
|
|
|
|
|
LL | union Union<T: ~const Trait> { field: T }
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:19:14
|
|
|
|
|
LL | type Type<T: ~const Trait> = T;
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:21:19
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: () = ();
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:25:18
|
|
|
|
|
LL | type Type<T: ~const Trait>: ~const Trait;
|
|
| ^^^^^^
|
|
|
|
|
note: associated types in non-`#[const_trait]` traits cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:25:5
|
|
|
|
|
LL | type Type<T: ~const Trait>: ~const Trait;
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:25:33
|
|
|
|
|
LL | type Type<T: ~const Trait>: ~const Trait;
|
|
| ^^^^^^
|
|
|
|
|
note: associated types in non-`#[const_trait]` traits cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:25:5
|
|
|
|
|
LL | type Type<T: ~const Trait>: ~const Trait;
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:28:30
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>();
|
|
| ^^^^^^
|
|
|
|
|
note: this function is not `const`, so it cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:28:8
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>();
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:29:23
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: ();
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:34:18
|
|
|
|
|
LL | type Type<T: ~const Trait> = ();
|
|
| ^^^^^^
|
|
|
|
|
note: associated types in non-const impls cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:34:5
|
|
|
|
|
LL | type Type<T: ~const Trait> = ();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:36:30
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>() {}
|
|
| ^^^^^^
|
|
|
|
|
note: this function is not `const`, so it cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:36:8
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>() {}
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:37:23
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: () = ();
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:44:18
|
|
|
|
|
LL | type Type<T: ~const Trait> = ();
|
|
| ^^^^^^
|
|
|
|
|
note: inherent associated types cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:44:5
|
|
|
|
|
LL | type Type<T: ~const Trait> = ();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:46:30
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>() {}
|
|
| ^^^^^^
|
|
|
|
|
note: this function is not `const`, so it cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:46:8
|
|
|
|
|
LL | fn non_const_function<T: ~const Trait>() {}
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:47:23
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: () = ();
|
|
| ^^^^^^
|
|
|
|
|
= note: this item cannot have `~const` trait bounds
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:52:15
|
|
|
|
|
LL | trait Child0: ~const Trait {}
|
|
| ^^^^^^
|
|
|
|
|
note: this trait is not a `#[const_trait]`, so it cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:52:1
|
|
|
|
|
LL | trait Child0: ~const Trait {}
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:53:26
|
|
|
|
|
LL | trait Child1 where Self: ~const Trait {}
|
|
| ^^^^^^
|
|
|
|
|
note: this trait is not a `#[const_trait]`, so it cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:53:1
|
|
|
|
|
LL | trait Child1 where Self: ~const Trait {}
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:56:9
|
|
|
|
|
LL | impl<T: ~const Trait> Trait for T {}
|
|
| ^^^^^^
|
|
|
|
|
note: this impl is not `const`, so it cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:56:1
|
|
|
|
|
LL | impl<T: ~const Trait> Trait for T {}
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error: `~const` is not allowed here
|
|
--> $DIR/tilde-const-invalid-places.rs:59:9
|
|
|
|
|
LL | impl<T: ~const Trait> Struct<T> {}
|
|
| ^^^^^^
|
|
|
|
|
note: inherent impls cannot have `~const` trait bounds
|
|
--> $DIR/tilde-const-invalid-places.rs:59:1
|
|
|
|
|
LL | impl<T: ~const Trait> Struct<T> {}
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
error[E0658]: generic const items are experimental
|
|
--> $DIR/tilde-const-invalid-places.rs:21:15
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: () = ();
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: see issue #113521 <https://github.com/rust-lang/rust/issues/113521> for more information
|
|
= help: add `#![feature(generic_const_items)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0658]: generic const items are experimental
|
|
--> $DIR/tilde-const-invalid-places.rs:29:19
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: ();
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: see issue #113521 <https://github.com/rust-lang/rust/issues/113521> for more information
|
|
= help: add `#![feature(generic_const_items)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0658]: generic const items are experimental
|
|
--> $DIR/tilde-const-invalid-places.rs:37:19
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: () = ();
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: see issue #113521 <https://github.com/rust-lang/rust/issues/113521> for more information
|
|
= help: add `#![feature(generic_const_items)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0658]: generic const items are experimental
|
|
--> $DIR/tilde-const-invalid-places.rs:47:19
|
|
|
|
|
LL | const CONSTANT<T: ~const Trait>: () = ();
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: see issue #113521 <https://github.com/rust-lang/rust/issues/113521> for more information
|
|
= help: add `#![feature(generic_const_items)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0658]: inherent associated types are unstable
|
|
--> $DIR/tilde-const-invalid-places.rs:44:5
|
|
|
|
|
LL | type Type<T: ~const Trait> = ();
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
|
= note: see issue #8995 <https://github.com/rust-lang/rust/issues/8995> for more information
|
|
= help: add `#![feature(inherent_associated_types)]` to the crate attributes to enable
|
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
|
|
error[E0392]: parameter `T` is never used
|
|
--> $DIR/tilde-const-invalid-places.rs:11:19
|
|
|
|
|
LL | struct UnitStruct<T: ~const Trait>;
|
|
| ^ unused parameter
|
|
|
|
|
= help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
|
|
|
|
error[E0740]: field must implement `Copy` or be wrapped in `ManuallyDrop<...>` to be used in a union
|
|
--> $DIR/tilde-const-invalid-places.rs:16:32
|
|
|
|
|
LL | union Union<T: ~const Trait> { field: T }
|
|
| ^^^^^^^^
|
|
|
|
|
= note: union fields must not have drop side-effects, which is currently enforced via either `Copy` or `ManuallyDrop<...>`
|
|
help: wrap the field type in `ManuallyDrop<...>`
|
|
|
|
|
LL | union Union<T: ~const Trait> { field: std::mem::ManuallyDrop<T> }
|
|
| +++++++++++++++++++++++ +
|
|
|
|
error[E0275]: overflow evaluating the requirement `(): Trait`
|
|
--> $DIR/tilde-const-invalid-places.rs:34:34
|
|
|
|
|
LL | type Type<T: ~const Trait> = ();
|
|
| ^^
|
|
|
|
|
note: required by a bound in `NonConstTrait::Type`
|
|
--> $DIR/tilde-const-invalid-places.rs:25:33
|
|
|
|
|
LL | type Type<T: ~const Trait>: ~const Trait;
|
|
| ^^^^^^^^^^^^ required by this bound in `NonConstTrait::Type`
|
|
|
|
error: aborting due to 30 previous errors
|
|
|
|
Some errors have detailed explanations: E0275, E0392, E0658, E0740.
|
|
For more information about an error, try `rustc --explain E0275`.
|