Auto merge of #89019 - Manishearth:rollup-5qp8a5s, r=Manishearth
Rollup of 10 pull requests Successful merges: - #88292 (Enable --generate-link-to-definition for rustc's docs) - #88729 (Recover from `Foo(a: 1, b: 2)`) - #88875 (cleanup(rustc_trait_selection): remove vestigial code from rustc_on_unimplemented) - #88892 (Move object safety suggestions to the end of the error) - #88928 (Document the closure arguments for `reduce`.) - #88976 (Clean up and add doc comments for CStr) - #88983 (Allow calling `get_body_with_borrowck_facts` without `-Z polonius`) - #88985 (Update clobber_abi list to include k[1-7] regs) - #88986 (Update the backtrace crate) - #89009 (Fix typo in `break` docs) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
e4828d5b7f
49 changed files with 210 additions and 106 deletions
|
|
@ -589,6 +589,7 @@ impl Step for Rustc {
|
|||
cargo.rustdocflag("-Zunstable-options");
|
||||
cargo.rustdocflag("-Znormalize-docs");
|
||||
cargo.rustdocflag("--show-type-layout");
|
||||
cargo.rustdocflag("--generate-link-to-definition");
|
||||
compile::rustc_cargo(builder, &mut cargo, target);
|
||||
cargo.arg("-Zunstable-options");
|
||||
cargo.arg("-Zskip-rustdoc-fingerprint");
|
||||
|
|
|
|||
|
|
@ -804,9 +804,9 @@ The following ABIs can be used with `clobber_abi`:
|
|||
|
||||
| Architecture | ABI name | Clobbered registers |
|
||||
| ------------ | -------- | ------------------- |
|
||||
| x86-32 | `"C"`, `"system"`, `"efiapi"`, `"cdecl"`, `"stdcall"`, `"fastcall"` | `ax`, `cx`, `dx`, `xmm[0-7]`, `mm[0-7]`, `st([0-7])` |
|
||||
| x86-64 | `"C"`, `"system"` (on Windows), `"efiapi"`, `"win64"` | `ax`, `cx`, `dx`, `r[8-11]`, `xmm[0-31]`, `mm[0-7]`, `st([0-7])` |
|
||||
| x86-64 | `"C"`, `"system"` (on non-Windows), `"sysv64"` | `ax`, `cx`, `dx`, `si`, `di`, `r[8-11]`, `xmm[0-31]`, `mm[0-7]`, `st([0-7])` |
|
||||
| x86-32 | `"C"`, `"system"`, `"efiapi"`, `"cdecl"`, `"stdcall"`, `"fastcall"` | `ax`, `cx`, `dx`, `xmm[0-7]`, `mm[0-7]`, `k[1-7]`, `st([0-7])` |
|
||||
| x86-64 | `"C"`, `"system"` (on Windows), `"efiapi"`, `"win64"` | `ax`, `cx`, `dx`, `r[8-11]`, `xmm[0-31]`, `mm[0-7]`, `k[1-7]`, `st([0-7])` |
|
||||
| x86-64 | `"C"`, `"system"` (on non-Windows), `"sysv64"` | `ax`, `cx`, `dx`, `si`, `di`, `r[8-11]`, `xmm[0-31]`, `mm[0-7]`, `k[1-7]`, `st([0-7])` |
|
||||
| AArch64 | `"C"`, `"system"`, `"efiapi"` | `x[0-17]`, `x30`, `v[0-31]`, `p[0-15]`, `ffr` |
|
||||
| ARM | `"C"`, `"system"`, `"efiapi"`, `"aapcs"` | `r[0-3]`, `r12`, `r14`, `s[0-15]`, `d[0-7]`, `d[16-31]` |
|
||||
| RISC-V | `"C"`, `"system"`, `"efiapi"` | `x1`, `x[5-7]`, `x[10-17]`, `x[28-31]`, `f[0-7]`, `f[10-17]`, `f[28-31]`, `v[0-31]` |
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Trait` cannot be made into an object
|
|||
LL | impl dyn Trait {
|
||||
| ^^^^^^^^^ `Trait` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `N` to another trait
|
||||
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>
|
||||
--> $DIR/associated-const-in-trait.rs:6:11
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Trait {
|
|||
| ----- this trait cannot be made into an object...
|
||||
LL | const N: usize;
|
||||
| ^ ...because it contains this associated `const`
|
||||
= help: consider moving `N` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | impl dyn Bar {}
|
||||
| ^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `X` to another trait
|
||||
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>
|
||||
--> $DIR/issue-48027.rs:2:11
|
||||
|
|
||||
|
|
@ -29,6 +28,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | const X: usize;
|
||||
| ^ ...because it contains this associated `const`
|
||||
= help: consider moving `X` to another trait
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `NotObjectSafe` cannot be made into an object
|
|||
LL | impl NotObjectSafe for dyn NotObjectSafe { }
|
||||
| ^^^^^^^^^^^^^^^^^ `NotObjectSafe` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `eq` to another trait
|
||||
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>
|
||||
--> $DIR/coherence-impl-trait-for-trait-object-safe.rs:6:43
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait NotObjectSafe { fn eq(&self, other: Self); }
|
|||
| ------------- ^^^^ ...because method `eq` references the `Self` type in this parameter
|
||||
| |
|
||||
| this trait cannot be made into an object...
|
||||
= help: consider moving `eq` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Foo` cannot be made into an object
|
|||
LL | fn use_dyn(v: &dyn Foo) {
|
||||
| ^^^^^^^ `Foo` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `test` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-err-ret.rs:8:23
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Foo {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn test(&self) -> [u8; bar::<Self>()];
|
||||
| ^^^^^^^^^^^^^^^^^^^ ...because method `test` references the `Self` type in its return type
|
||||
= help: consider moving `test` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Trait` cannot be made into an object
|
|||
LL | fn call_foo(x: Box<dyn Trait>) {
|
||||
| ^^^^^^^^^ `Trait` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `foo` to another trait
|
||||
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>
|
||||
--> $DIR/E0038.rs:2:22
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Trait {
|
|||
| ----- this trait cannot be made into an object...
|
||||
LL | fn foo(&self) -> Self;
|
||||
| ^^^^ ...because method `foo` references the `Self` type in its return type
|
||||
= help: consider moving `foo` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ error[E0038]: the trait `NonObjectSafe3` cannot be made into an object
|
|||
LL | fn takes_non_object_safe_box(obj: Box<dyn NonObjectSafe3>) {
|
||||
| ^^^^^^^^^^^^^^^^^^ `NonObjectSafe3` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `foo` to another trait
|
||||
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>
|
||||
--> $DIR/feature-gate-object_safe_for_dispatch.rs:11:8
|
||||
|
|
||||
|
|
@ -48,6 +47,7 @@ LL | trait NonObjectSafe3 {
|
|||
| -------------- this trait cannot be made into an object...
|
||||
LL | fn foo<T>(&self);
|
||||
| ^^^ ...because method `foo` has generic type parameters
|
||||
= help: consider moving `foo` to another trait
|
||||
|
||||
error[E0038]: the trait `NonObjectSafe4` cannot be made into an object
|
||||
--> $DIR/feature-gate-object_safe_for_dispatch.rs:31:35
|
||||
|
|
@ -55,7 +55,6 @@ error[E0038]: the trait `NonObjectSafe4` cannot be made into an object
|
|||
LL | fn return_non_object_safe_rc() -> std::rc::Rc<dyn NonObjectSafe4> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `NonObjectSafe4` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `foo` to another trait
|
||||
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>
|
||||
--> $DIR/feature-gate-object_safe_for_dispatch.rs:15:22
|
||||
|
|
||||
|
|
@ -63,6 +62,7 @@ LL | trait NonObjectSafe4 {
|
|||
| -------------- this trait cannot be made into an object...
|
||||
LL | fn foo(&self, s: &Self);
|
||||
| ^^^^^ ...because method `foo` references the `Self` type in this parameter
|
||||
= help: consider moving `foo` to another trait
|
||||
|
||||
error[E0038]: the trait `NonObjectSafe1` cannot be made into an object
|
||||
--> $DIR/feature-gate-object_safe_for_dispatch.rs:38:16
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Foo` cannot be made into an object
|
|||
LL | fn f(_arg : Box<dyn for<'a> Foo<A<'a> = &'a ()>>) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Foo` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `A` to another trait
|
||||
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>
|
||||
--> $DIR/gat-in-trait-path.rs:5:10
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Foo {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | type A<'a> where Self: 'a;
|
||||
| ^ ...because it contains the generic associated type `A`
|
||||
= help: consider moving `A` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `X` cannot be made into an object
|
|||
LL | fn _func1<'a>(_x: Box<dyn X<Y<'a>=&'a ()>>) {}
|
||||
| ^^^^^^^^^^^^^^^^^^^ `X` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `Y` to another trait
|
||||
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>
|
||||
--> $DIR/issue-67510-pass.rs:4:10
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait X {
|
|||
| - this trait cannot be made into an object...
|
||||
LL | type Y<'a>;
|
||||
| ^ ...because it contains the generic associated type `Y`
|
||||
= help: consider moving `Y` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ error[E0038]: the trait `SuperTrait` cannot be made into an object
|
|||
LL | let sub: Box<dyn SuperTrait<SubType = SubStruct>> = Box::new(SuperStruct::new(0));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `SuperTrait` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `SubType` to another trait
|
||||
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>
|
||||
--> $DIR/issue-76535.rs:6:10
|
||||
|
|
||||
|
|
@ -28,6 +27,7 @@ LL | pub trait SuperTrait {
|
|||
| ---------- this trait cannot be made into an object...
|
||||
LL | type SubType<'a>: SubTrait;
|
||||
| ^^^^^^^ ...because it contains the generic associated type `SubType`
|
||||
= help: consider moving `SubType` to another trait
|
||||
|
||||
error[E0038]: the trait `SuperTrait` cannot be made into an object
|
||||
--> $DIR/issue-76535.rs:36:57
|
||||
|
|
@ -35,7 +35,6 @@ error[E0038]: the trait `SuperTrait` cannot be made into an object
|
|||
LL | let sub: Box<dyn SuperTrait<SubType = SubStruct>> = Box::new(SuperStruct::new(0));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `SuperTrait` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `SubType` to another trait
|
||||
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>
|
||||
--> $DIR/issue-76535.rs:6:10
|
||||
|
|
||||
|
|
@ -43,6 +42,7 @@ LL | pub trait SuperTrait {
|
|||
| ---------- this trait cannot be made into an object...
|
||||
LL | type SubType<'a>: SubTrait;
|
||||
| ^^^^^^^ ...because it contains the generic associated type `SubType`
|
||||
= help: consider moving `SubType` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<Box<dyn SuperTrait<SubType = SubStruct<'_>>>>` for `Box<SuperStruct>`
|
||||
= note: required by cast to type `Box<dyn SuperTrait<SubType = SubStruct<'_>>>`
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ error[E0038]: the trait `CollectionFamily` cannot be made into an object
|
|||
LL | Box::new(Family) as &dyn CollectionFamily<Member=usize>
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `CollectionFamily` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `Member` to another trait
|
||||
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>
|
||||
--> $DIR/issue-78671.rs:4:10
|
||||
|
|
||||
|
|
@ -28,6 +27,7 @@ LL | trait CollectionFamily {
|
|||
| ---------------- this trait cannot be made into an object...
|
||||
LL | type Member<T>;
|
||||
| ^^^^^^ ...because it contains the generic associated type `Member`
|
||||
= help: consider moving `Member` to another trait
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ error[E0038]: the trait `MapLike` cannot be made into an object
|
|||
LL | as Box<dyn MapLike<u8, u8, VRefCont = dyn RefCont<'_, u8>>>;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `MapLike` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `VRefCont` to another trait
|
||||
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>
|
||||
--> $DIR/issue-79422.rs:20:10
|
||||
|
|
||||
|
|
@ -28,6 +27,7 @@ LL | trait MapLike<K, V> {
|
|||
| ------- this trait cannot be made into an object...
|
||||
LL | type VRefCont<'a>: RefCont<'a, V>;
|
||||
| ^^^^^^^^ ...because it contains the generic associated type `VRefCont`
|
||||
= help: consider moving `VRefCont` to another trait
|
||||
|
||||
error[E0038]: the trait `MapLike` cannot be made into an object
|
||||
--> $DIR/issue-79422.rs:41:13
|
||||
|
|
@ -35,7 +35,6 @@ error[E0038]: the trait `MapLike` cannot be made into an object
|
|||
LL | let m = Box::new(std::collections::BTreeMap::<u8, u8>::new())
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `MapLike` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `VRefCont` to another trait
|
||||
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>
|
||||
--> $DIR/issue-79422.rs:20:10
|
||||
|
|
||||
|
|
@ -43,6 +42,7 @@ LL | trait MapLike<K, V> {
|
|||
| ------- this trait cannot be made into an object...
|
||||
LL | type VRefCont<'a>: RefCont<'a, V>;
|
||||
| ^^^^^^^^ ...because it contains the generic associated type `VRefCont`
|
||||
= help: consider moving `VRefCont` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<Box<dyn MapLike<u8, u8, VRefCont = (dyn RefCont<'_, u8> + 'static)>>>` for `Box<BTreeMap<u8, u8>>`
|
||||
= note: required by cast to type `Box<dyn MapLike<u8, u8, VRefCont = (dyn RefCont<'_, u8> + 'static)>>`
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `StreamingIterator` cannot be made into an object
|
|||
LL | fn min_size(x: &mut dyn for<'a> StreamingIterator<Item<'a> = &'a i32>) -> usize {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `StreamingIterator` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `Item` to another trait
|
||||
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>
|
||||
--> $DIR/trait-objects.rs:4:10
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait StreamingIterator {
|
|||
| ----------------- this trait cannot be made into an object...
|
||||
LL | type Item<'a> where Self: 'a;
|
||||
| ^^^^ ...because it contains the generic associated type `Item`
|
||||
= help: consider moving `Item` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | fn foo(b: &dyn Bar) {
|
||||
| ^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `foo` to another trait
|
||||
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>
|
||||
--> $DIR/issue-18959.rs:1:20
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | pub trait Foo { fn foo<T>(&self, ext_thing: &T); }
|
|||
| ^^^ ...because method `foo` has generic type parameters
|
||||
LL | pub trait Bar: Foo { }
|
||||
| --- this trait cannot be made into an object...
|
||||
= help: consider moving `foo` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | let test: &mut dyn Bar = &mut thing;
|
||||
| ^^^^^^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `foo` to another trait
|
||||
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>
|
||||
--> $DIR/issue-19538.rs:2:8
|
||||
|
|
||||
|
|
@ -13,6 +12,7 @@ LL | fn foo<T>(&self, val: T);
|
|||
...
|
||||
LL | trait Bar: Foo { }
|
||||
| --- this trait cannot be made into an object...
|
||||
= help: consider moving `foo` to another trait
|
||||
|
||||
error[E0038]: the trait `Bar` cannot be made into an object
|
||||
--> $DIR/issue-19538.rs:17:30
|
||||
|
|
@ -20,7 +20,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | let test: &mut dyn Bar = &mut thing;
|
||||
| ^^^^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `foo` to another trait
|
||||
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>
|
||||
--> $DIR/issue-19538.rs:2:8
|
||||
|
|
||||
|
|
@ -29,6 +28,7 @@ LL | fn foo<T>(&self, val: T);
|
|||
...
|
||||
LL | trait Bar: Foo { }
|
||||
| --- this trait cannot be made into an object...
|
||||
= help: consider moving `foo` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<&mut dyn Bar>` for `&mut Thing`
|
||||
= note: required by cast to type `&mut dyn Bar`
|
||||
|
||||
|
|
|
|||
|
|
@ -6,5 +6,5 @@ enum Test {
|
|||
|
||||
fn main() {
|
||||
Test::Drill(field: 42);
|
||||
//~^ ERROR expected type, found
|
||||
//~^ ERROR invalid `struct` delimiters or `fn` call arguments
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,18 @@
|
|||
error: expected type, found `42`
|
||||
--> $DIR/issue-34255-1.rs:8:24
|
||||
error: invalid `struct` delimiters or `fn` call arguments
|
||||
--> $DIR/issue-34255-1.rs:8:5
|
||||
|
|
||||
LL | Test::Drill(field: 42);
|
||||
| - ^^ expected type
|
||||
| |
|
||||
| tried to parse a type due to this type ascription
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `#![feature(type_ascription)]` lets you annotate an expression with a type: `<expr>: <type>`
|
||||
= note: see issue #23416 <https://github.com/rust-lang/rust/issues/23416> for more information
|
||||
help: if `Test::Drill` is a struct, use braces as delimiters
|
||||
|
|
||||
LL | Test::Drill { field: 42 };
|
||||
| ~ ~
|
||||
help: if `Test::Drill` is a function, use the arguments directly
|
||||
|
|
||||
LL - Test::Drill(field: 42);
|
||||
LL + Test::Drill(42);
|
||||
|
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | fn make_bar<T:Bar>(t: &T) -> &dyn Bar {
|
||||
| ^^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `X` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-associated-consts.rs:9:11
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | const X: usize;
|
||||
| ^ ...because it contains this associated `const`
|
||||
= help: consider moving `X` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | t
|
||||
| ^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `X` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-associated-consts.rs:9:11
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | const X: usize;
|
||||
| ^ ...because it contains this associated `const`
|
||||
= help: consider moving `X` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<&dyn Bar>` for `&T`
|
||||
= note: required by cast to type `&dyn Bar`
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | fn make_bar<T:Bar>(t: &T) -> &dyn Bar {
|
||||
| ^^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `bar` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-generics.rs:10:8
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn bar<T>(&self, t: T);
|
||||
| ^^^ ...because method `bar` has generic type parameters
|
||||
= help: consider moving `bar` to another trait
|
||||
|
||||
error[E0038]: the trait `Bar` cannot be made into an object
|
||||
--> $DIR/object-safety-generics.rs:24:39
|
||||
|
|
@ -19,7 +19,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | fn make_bar_explicit<T:Bar>(t: &T) -> &dyn Bar {
|
||||
| ^^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `bar` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-generics.rs:10:8
|
||||
|
|
||||
|
|
@ -27,6 +26,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn bar<T>(&self, t: T);
|
||||
| ^^^ ...because method `bar` has generic type parameters
|
||||
= help: consider moving `bar` to another trait
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | t
|
||||
| ^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `bar` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-generics.rs:10:8
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn bar<T>(&self, t: T);
|
||||
| ^^^ ...because method `bar` has generic type parameters
|
||||
= help: consider moving `bar` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<&dyn Bar>` for `&T`
|
||||
= note: required by cast to type `&dyn Bar`
|
||||
|
||||
|
|
@ -21,7 +21,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | t as &dyn Bar
|
||||
| ^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `bar` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-generics.rs:10:8
|
||||
|
|
||||
|
|
@ -29,6 +28,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn bar<T>(&self, t: T);
|
||||
| ^^^ ...because method `bar` has generic type parameters
|
||||
= help: consider moving `bar` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<&dyn Bar>` for `&T`
|
||||
= note: required by cast to type `&dyn Bar`
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | fn make_bar<T:Bar>(t: &T) -> &dyn Bar {
|
||||
| ^^^^^^^^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `bar` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-mentions-Self.rs:11:22
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn bar(&self, x: &Self);
|
||||
| ^^^^^ ...because method `bar` references the `Self` type in this parameter
|
||||
= help: consider moving `bar` to another trait
|
||||
|
||||
error[E0038]: the trait `Baz` cannot be made into an object
|
||||
--> $DIR/object-safety-mentions-Self.rs:28:30
|
||||
|
|
@ -19,7 +19,6 @@ error[E0038]: the trait `Baz` cannot be made into an object
|
|||
LL | fn make_baz<T:Baz>(t: &T) -> &dyn Baz {
|
||||
| ^^^^^^^^ `Baz` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `baz` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-mentions-Self.rs:15:22
|
||||
|
|
||||
|
|
@ -27,6 +26,7 @@ LL | trait Baz {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn baz(&self) -> Self;
|
||||
| ^^^^ ...because method `baz` references the `Self` type in its return type
|
||||
= help: consider moving `baz` to another trait
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `Bar` cannot be made into an object
|
|||
LL | t
|
||||
| ^ `Bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `bar` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-mentions-Self.rs:11:22
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait Bar {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn bar(&self, x: &Self);
|
||||
| ^^^^^ ...because method `bar` references the `Self` type in this parameter
|
||||
= help: consider moving `bar` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<&dyn Bar>` for `&T`
|
||||
= note: required by cast to type `&dyn Bar`
|
||||
|
||||
|
|
@ -21,7 +21,6 @@ error[E0038]: the trait `Baz` cannot be made into an object
|
|||
LL | t
|
||||
| ^ `Baz` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `baz` to another trait
|
||||
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>
|
||||
--> $DIR/object-safety-mentions-Self.rs:15:22
|
||||
|
|
||||
|
|
@ -29,6 +28,7 @@ LL | trait Baz {
|
|||
| --- this trait cannot be made into an object...
|
||||
LL | fn baz(&self) -> Self;
|
||||
| ^^^^ ...because method `baz` references the `Self` type in its return type
|
||||
= help: consider moving `baz` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<&dyn Baz>` for `&T`
|
||||
= note: required by cast to type `&dyn Baz`
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
macro_rules! foo {
|
||||
($rest: tt) => {
|
||||
bar(baz: $rest)
|
||||
bar(baz: $rest) //~ ERROR invalid `struct` delimiters or `fn` call arguments
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
foo!(true); //~ ERROR expected type, found keyword
|
||||
foo!(true);
|
||||
//~^ ERROR expected identifier, found keyword
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,17 +9,25 @@ help: you can escape reserved keywords to use them as identifiers
|
|||
LL | foo!(r#true);
|
||||
| ~~~~~~
|
||||
|
||||
error: expected type, found keyword `true`
|
||||
--> $DIR/issue-44406.rs:8:10
|
||||
error: invalid `struct` delimiters or `fn` call arguments
|
||||
--> $DIR/issue-44406.rs:3:9
|
||||
|
|
||||
LL | bar(baz: $rest)
|
||||
| - help: try using a semicolon: `;`
|
||||
| ^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | foo!(true);
|
||||
| ^^^^ expected type
|
||||
| ----------- in this macro invocation
|
||||
|
|
||||
= note: `#![feature(type_ascription)]` lets you annotate an expression with a type: `<expr>: <type>`
|
||||
= note: see issue #23416 <https://github.com/rust-lang/rust/issues/23416> for more information
|
||||
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
help: if `bar` is a struct, use braces as delimiters
|
||||
|
|
||||
LL | bar { }
|
||||
| ~
|
||||
help: if `bar` is a function, use the arguments directly
|
||||
|
|
||||
LL - bar(baz: $rest)
|
||||
LL + bar(true);
|
||||
|
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ enum Enum {
|
|||
|
||||
fn main() {
|
||||
let x = Enum::Foo(a: 3, b: 4);
|
||||
//~^ ERROR expected type, found `3`
|
||||
//~^ ERROR invalid `struct` delimiters or `fn` call arguments
|
||||
match x {
|
||||
Enum::Foo(a, b) => {}
|
||||
//~^ ERROR expected tuple struct or tuple variant, found struct variant `Enum::Foo`
|
||||
|
|
|
|||
|
|
@ -1,13 +1,18 @@
|
|||
error: expected type, found `3`
|
||||
--> $DIR/recover-from-bad-variant.rs:7:26
|
||||
error: invalid `struct` delimiters or `fn` call arguments
|
||||
--> $DIR/recover-from-bad-variant.rs:7:13
|
||||
|
|
||||
LL | let x = Enum::Foo(a: 3, b: 4);
|
||||
| - ^ expected type
|
||||
| |
|
||||
| tried to parse a type due to this type ascription
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `#![feature(type_ascription)]` lets you annotate an expression with a type: `<expr>: <type>`
|
||||
= note: see issue #23416 <https://github.com/rust-lang/rust/issues/23416> for more information
|
||||
help: if `Enum::Foo` is a struct, use braces as delimiters
|
||||
|
|
||||
LL | let x = Enum::Foo { a: 3, b: 4 };
|
||||
| ~ ~
|
||||
help: if `Enum::Foo` is a function, use the arguments directly
|
||||
|
|
||||
LL - let x = Enum::Foo(a: 3, b: 4);
|
||||
LL + let x = Enum::Foo(3, 4);
|
||||
|
|
||||
|
||||
error[E0532]: expected tuple struct or tuple variant, found struct variant `Enum::Foo`
|
||||
--> $DIR/recover-from-bad-variant.rs:10:9
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ error[E0038]: the trait `Trait` cannot be made into an object
|
|||
LL | fn bar(x: &dyn Trait) {}
|
||||
| ^^^^^^^^^ `Trait` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `baz` to another trait
|
||||
= help: consider moving `bat` to another trait
|
||||
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>
|
||||
--> $DIR/object-unsafe-trait-references-self.rs:2:22
|
||||
|
|
||||
|
|
@ -15,6 +13,8 @@ LL | fn baz(&self, _: Self) {}
|
|||
| ^^^^ ...because method `baz` references the `Self` type in this parameter
|
||||
LL | fn bat(&self) -> Self {}
|
||||
| ^^^^ ...because method `bat` references the `Self` type in its return type
|
||||
= help: consider moving `baz` to another trait
|
||||
= help: consider moving `bat` to another trait
|
||||
|
||||
error[E0038]: the trait `Other` cannot be made into an object
|
||||
--> $DIR/object-unsafe-trait-references-self.rs:10:12
|
||||
|
|
|
|||
|
|
@ -127,9 +127,6 @@ error[E0038]: the trait `assoc_const::C` cannot be made into an object
|
|||
LL | <dyn C>::A;
|
||||
| ^^^^^ `assoc_const::C` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `C` to another trait
|
||||
= help: consider moving `B` to another trait
|
||||
= help: consider moving `A` to another trait
|
||||
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>
|
||||
--> $DIR/item-privacy.rs:25:15
|
||||
|
|
||||
|
|
@ -143,6 +140,9 @@ LL | pub trait C: A + B {
|
|||
| - this trait cannot be made into an object...
|
||||
LL | const C: u8 = 0;
|
||||
| ^ ...because it contains this associated `const`
|
||||
= help: consider moving `C` to another trait
|
||||
= help: consider moving `A` to another trait
|
||||
= help: consider moving `B` to another trait
|
||||
|
||||
error[E0223]: ambiguous associated type
|
||||
--> $DIR/item-privacy.rs:115:12
|
||||
|
|
|
|||
|
|
@ -32,8 +32,6 @@ error[E0038]: the trait `bar` cannot be made into an object
|
|||
LL | (box 10 as Box<dyn bar>).dup();
|
||||
| ^^^^^^^^^^^^ `bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `dup` to another trait
|
||||
= help: consider moving `blah` to another trait
|
||||
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>
|
||||
--> $DIR/test-2.rs:4:30
|
||||
|
|
||||
|
|
@ -42,6 +40,8 @@ LL | trait bar { fn dup(&self) -> Self; fn blah<X>(&self); }
|
|||
| | |
|
||||
| | ...because method `dup` references the `Self` type in its return type
|
||||
| this trait cannot be made into an object...
|
||||
= help: consider moving `dup` to another trait
|
||||
= help: consider moving `blah` to another trait
|
||||
|
||||
error[E0038]: the trait `bar` cannot be made into an object
|
||||
--> $DIR/test-2.rs:13:6
|
||||
|
|
@ -49,8 +49,6 @@ error[E0038]: the trait `bar` cannot be made into an object
|
|||
LL | (box 10 as Box<dyn bar>).dup();
|
||||
| ^^^^^^ `bar` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `dup` to another trait
|
||||
= help: consider moving `blah` to another trait
|
||||
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>
|
||||
--> $DIR/test-2.rs:4:30
|
||||
|
|
||||
|
|
@ -59,6 +57,8 @@ LL | trait bar { fn dup(&self) -> Self; fn blah<X>(&self); }
|
|||
| | |
|
||||
| | ...because method `dup` references the `Self` type in its return type
|
||||
| this trait cannot be made into an object...
|
||||
= help: consider moving `dup` to another trait
|
||||
= help: consider moving `blah` to another trait
|
||||
= note: required because of the requirements on the impl of `CoerceUnsized<Box<dyn bar>>` for `Box<{integer}>`
|
||||
= note: required by cast to type `Box<dyn bar>`
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ error[E0038]: the trait `MyAdd` cannot be made into an object
|
|||
LL | let y = x as dyn MyAdd<i32>;
|
||||
| ^^^^^^^^^^^^^^ `MyAdd` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `add` to another trait
|
||||
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>
|
||||
--> $DIR/type-parameter-defaults-referencing-Self-ppaux.rs:6:55
|
||||
|
|
||||
|
|
@ -24,6 +23,7 @@ LL | trait MyAdd<Rhs=Self> { fn add(&self, other: &Rhs) -> Self; }
|
|||
| ----- ^^^^ ...because method `add` references the `Self` type in its return type
|
||||
| |
|
||||
| this trait cannot be made into an object...
|
||||
= help: consider moving `add` to another trait
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `T` cannot be made into an object
|
|||
LL | const CONST: (bool, dyn T);
|
||||
| ^^^^^ `T` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `CONST` to another trait
|
||||
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>
|
||||
--> $DIR/issue-87495.rs:4:11
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait T {
|
|||
| - this trait cannot be made into an object...
|
||||
LL | const CONST: (bool, dyn T);
|
||||
| ^^^^^ ...because it contains this associated `const`
|
||||
= help: consider moving `CONST` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ error[E0038]: the trait `A` cannot be made into an object
|
|||
LL | let _x: &dyn A;
|
||||
| ^^^^^^ `A` cannot be made into an object
|
||||
|
|
||||
= help: consider moving `foo` to another trait
|
||||
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>
|
||||
--> $DIR/wf-object-safe.rs:5:23
|
||||
|
|
||||
|
|
@ -12,6 +11,7 @@ LL | trait A {
|
|||
| - this trait cannot be made into an object...
|
||||
LL | fn foo(&self, _x: &Self);
|
||||
| ^^^^^ ...because method `foo` references the `Self` type in this parameter
|
||||
= help: consider moving `foo` to another trait
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue