ee9c7c940c
Continue compilation after check_mod_type_wf errors The ICEs fixed here were probably reachable through const eval gymnastics before, but now they are easily reachable without that, too. The new errors are often bugfixes, where useful errors were missing, because they were reported after the early abort. In other cases sometimes they are just duplication of already emitted errors, which won't be user-visible due to deduplication. fixes https://github.com/rust-lang/rust/issues/120860
70 lines
2.8 KiB
Plaintext
70 lines
2.8 KiB
Plaintext
warning: trait objects without an explicit `dyn` are deprecated
|
|
--> $DIR/avoid-ice-on-warning-2.rs:4:13
|
|
|
|
|
LL | fn id<F>(f: Copy) -> usize {
|
|
| ^^^^
|
|
|
|
|
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
= note: `#[warn(bare_trait_objects)]` on by default
|
|
help: if this is an object-safe trait, use `dyn`
|
|
|
|
|
LL | fn id<F>(f: dyn Copy) -> usize {
|
|
| +++
|
|
|
|
warning: trait objects without an explicit `dyn` are deprecated
|
|
--> $DIR/avoid-ice-on-warning-2.rs:4:13
|
|
|
|
|
LL | fn id<F>(f: Copy) -> usize {
|
|
| ^^^^
|
|
|
|
|
= warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
|
|
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
|
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
|
help: if this is an object-safe trait, use `dyn`
|
|
|
|
|
LL | fn id<F>(f: dyn Copy) -> usize {
|
|
| +++
|
|
|
|
error[E0038]: the trait `Copy` cannot be made into an object
|
|
--> $DIR/avoid-ice-on-warning-2.rs:4:13
|
|
|
|
|
LL | fn id<F>(f: Copy) -> usize {
|
|
| ^^^^ `Copy` cannot be made into an object
|
|
|
|
|
= note: the trait cannot be made into an object because it requires `Self: Sized`
|
|
= note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
|
|
|
|
error[E0618]: expected function, found `(dyn Copy + 'static)`
|
|
--> $DIR/avoid-ice-on-warning-2.rs:11:5
|
|
|
|
|
LL | fn id<F>(f: Copy) -> usize {
|
|
| - `f` has type `(dyn Copy + 'static)`
|
|
...
|
|
LL | f()
|
|
| ^--
|
|
| |
|
|
| call expression requires function
|
|
|
|
error[E0277]: the size for values of type `(dyn Copy + 'static)` cannot be known at compilation time
|
|
--> $DIR/avoid-ice-on-warning-2.rs:4:10
|
|
|
|
|
LL | fn id<F>(f: Copy) -> usize {
|
|
| ^ doesn't have a size known at compile-time
|
|
|
|
|
= help: the trait `Sized` is not implemented for `(dyn Copy + 'static)`
|
|
= help: unsized fn params are gated as an unstable feature
|
|
help: you can use `impl Trait` as the argument type
|
|
|
|
|
LL | fn id<F>(f: impl Copy) -> usize {
|
|
| ++++
|
|
help: function arguments must have a statically known size, borrowed types always have a known size
|
|
|
|
|
LL | fn id<F>(f: &dyn Copy) -> usize {
|
|
| ++++
|
|
|
|
error: aborting due to 3 previous errors; 2 warnings emitted
|
|
|
|
Some errors have detailed explanations: E0038, E0277, E0618.
|
|
For more information about an error, try `rustc --explain E0038`.
|