diff options
| author | bors <bors@rust-lang.org> | 2018-06-26 11:20:18 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-06-26 11:20:18 +0000 |
| commit | 764232cb2a8407c72b9fea68835e686240e30ef3 (patch) | |
| tree | d97ad05cf89b5e952cd58394ea8c5e8b4e82c803 /src/test | |
| parent | 309fd8a6fb059d38ea56274968feff2ef738184b (diff) | |
| parent | a539885450313a6cfd50312ec12a4a84d546d87c (diff) | |
| download | rust-764232cb2a8407c72b9fea68835e686240e30ef3.tar.gz rust-764232cb2a8407c72b9fea68835e686240e30ef3.zip | |
Auto merge of #51805 - pietroalbini:rollup, r=pietroalbini
Rollup of 11 pull requests Successful merges: - #51104 (add `dyn ` to display of dynamic (trait) types) - #51153 (Link panic and compile_error docs) - #51642 (Fix unknown windows build) - #51730 (New safe associated functions for PinMut) - #51731 (Fix ICEs when using continue as an array length inside closures (inside loop conditions)) - #51747 (Add error for using null characters in #[export_name]) - #51769 (Update broken rustc-guide links) - #51786 (Remove unnecessary stat64 pointer casts) - #51788 (Fix typo) - #51789 (Don't ICE when performing `lower_pattern_unadjusted` on a `TyError`) - #51791 (Minify css) Failed merges: r? @ghost
Diffstat (limited to 'src/test')
67 files changed, 240 insertions, 150 deletions
diff --git a/src/test/compile-fail/cross-borrow-trait.rs b/src/test/compile-fail/cross-borrow-trait.rs index 847a82c0826..7c76cf475d2 100644 --- a/src/test/compile-fail/cross-borrow-trait.rs +++ b/src/test/compile-fail/cross-borrow-trait.rs @@ -18,6 +18,6 @@ impl Trait for Foo {} pub fn main() { let x: Box<Trait> = Box::new(Foo); let _y: &Trait = x; //~ ERROR E0308 - //~| expected type `&Trait` - //~| found type `std::boxed::Box<Trait>` + //~| expected type `&dyn Trait` + //~| found type `std::boxed::Box<dyn Trait>` } diff --git a/src/test/compile-fail/destructure-trait-ref.rs b/src/test/compile-fail/destructure-trait-ref.rs index 09bd3a2fc57..b5acdc12ca0 100644 --- a/src/test/compile-fail/destructure-trait-ref.rs +++ b/src/test/compile-fail/destructure-trait-ref.rs @@ -33,23 +33,23 @@ fn main() { let &&x = &&(&1isize as &T); // n == m - let &x = &1isize as &T; //~ ERROR type `&T` cannot be dereferenced - let &&x = &(&1isize as &T); //~ ERROR type `&T` cannot be dereferenced - let box x = box 1isize as Box<T>; //~ ERROR type `std::boxed::Box<T>` cannot be dereferenced + let &x = &1isize as &T; //~ ERROR type `&dyn T` cannot be dereferenced + let &&x = &(&1isize as &T); //~ ERROR type `&dyn T` cannot be dereferenced + let box x = box 1isize as Box<T>; //~ ERROR type `std::boxed::Box<dyn T>` cannot be dereferenced // n > m let &&x = &1isize as &T; //~^ ERROR mismatched types - //~| expected type `T` + //~| expected type `dyn T` //~| found type `&_` //~| expected trait T, found reference let &&&x = &(&1isize as &T); //~^ ERROR mismatched types - //~| expected type `T` + //~| expected type `dyn T` //~| found type `&_` //~| expected trait T, found reference let box box x = box 1isize as Box<T>; //~^ ERROR mismatched types - //~| expected type `T` + //~| expected type `dyn T` //~| found type `std::boxed::Box<_>` } diff --git a/src/test/compile-fail/dst-bad-assign-3.rs b/src/test/compile-fail/dst-bad-assign-3.rs index 5bc6c6cda26..2a209a2959b 100644 --- a/src/test/compile-fail/dst-bad-assign-3.rs +++ b/src/test/compile-fail/dst-bad-assign-3.rs @@ -42,7 +42,7 @@ pub fn main() { let z: Box<ToBar> = Box::new(Bar1 {f: 36}); f5.2 = Bar1 {f: 36}; //~^ ERROR mismatched types - //~| expected type `ToBar` + //~| expected type `dyn ToBar` //~| found type `Bar1` //~| expected trait ToBar, found struct `Bar1` //~| ERROR the size for value values of type diff --git a/src/test/compile-fail/dst-bad-assign.rs b/src/test/compile-fail/dst-bad-assign.rs index 37b6056d1a7..e28586c4755 100644 --- a/src/test/compile-fail/dst-bad-assign.rs +++ b/src/test/compile-fail/dst-bad-assign.rs @@ -44,7 +44,7 @@ pub fn main() { let z: Box<ToBar> = Box::new(Bar1 {f: 36}); f5.ptr = Bar1 {f: 36}; //~^ ERROR mismatched types - //~| expected type `ToBar` + //~| expected type `dyn ToBar` //~| found type `Bar1` //~| expected trait ToBar, found struct `Bar1` //~| ERROR the size for value values of type diff --git a/src/test/compile-fail/fn-trait-formatting.rs b/src/test/compile-fail/fn-trait-formatting.rs index 6d70f54edb4..56d64d77ee2 100644 --- a/src/test/compile-fail/fn-trait-formatting.rs +++ b/src/test/compile-fail/fn-trait-formatting.rs @@ -16,15 +16,15 @@ fn main() { let _: () = (box |_: isize| {}) as Box<FnOnce(isize)>; //~^ ERROR mismatched types //~| expected type `()` - //~| found type `std::boxed::Box<std::ops::FnOnce(isize)>` + //~| found type `std::boxed::Box<dyn std::ops::FnOnce(isize)>` let _: () = (box |_: isize, isize| {}) as Box<Fn(isize, isize)>; //~^ ERROR mismatched types //~| expected type `()` - //~| found type `std::boxed::Box<std::ops::Fn(isize, isize)>` + //~| found type `std::boxed::Box<dyn std::ops::Fn(isize, isize)>` let _: () = (box || -> isize { unimplemented!() }) as Box<FnMut() -> isize>; //~^ ERROR mismatched types //~| expected type `()` - //~| found type `std::boxed::Box<std::ops::FnMut() -> isize>` + //~| found type `std::boxed::Box<dyn std::ops::FnMut() -> isize>` needs_fn(1); //~^ ERROR : std::ops::Fn<(isize,)>` diff --git a/src/test/compile-fail/issue-13033.rs b/src/test/compile-fail/issue-13033.rs index 3d9d81471cb..f1fd617717a 100644 --- a/src/test/compile-fail/issue-13033.rs +++ b/src/test/compile-fail/issue-13033.rs @@ -17,8 +17,8 @@ struct Baz; impl Foo for Baz { fn bar(&mut self, other: &Foo) {} //~^ ERROR method `bar` has an incompatible type for trait - //~| expected type `fn(&mut Baz, &mut Foo)` - //~| found type `fn(&mut Baz, &Foo)` + //~| expected type `fn(&mut Baz, &mut dyn Foo)` + //~| found type `fn(&mut Baz, &dyn Foo)` } fn main() {} diff --git a/src/test/compile-fail/issue-20939.rs b/src/test/compile-fail/issue-20939.rs index 88197166ee0..5282ce4bb88 100644 --- a/src/test/compile-fail/issue-20939.rs +++ b/src/test/compile-fail/issue-20939.rs @@ -11,6 +11,6 @@ trait Foo {} impl<'a> Foo for Foo+'a {} -//~^ ERROR the object type `Foo + 'a` automatically implements the trait `Foo` +//~^ ERROR the object type `(dyn Foo + 'a)` automatically implements the trait `Foo` fn main() {} diff --git a/src/test/compile-fail/issue-32963.rs b/src/test/compile-fail/issue-32963.rs index e97e5a86a9d..24db822f89c 100644 --- a/src/test/compile-fail/issue-32963.rs +++ b/src/test/compile-fail/issue-32963.rs @@ -17,5 +17,5 @@ fn size_of_copy<T: Copy+?Sized>() -> usize { mem::size_of::<T>() } fn main() { size_of_copy::<Misc+Copy>(); //~^ ERROR only auto traits can be used as additional traits in a trait object - //~| ERROR the trait bound `Misc: std::marker::Copy` is not satisfied + //~| ERROR the trait bound `dyn Misc: std::marker::Copy` is not satisfied } diff --git a/src/test/compile-fail/issue-41139.rs b/src/test/compile-fail/issue-41139.rs index 15ca151c49a..0509a4387ba 100644 --- a/src/test/compile-fail/issue-41139.rs +++ b/src/test/compile-fail/issue-41139.rs @@ -14,5 +14,5 @@ fn get_function<'a>() -> &'a Fn() -> Trait { panic!("") } fn main() { let t : &Trait = &get_function()(); - //~^ ERROR cannot move a value of type Trait + 'static + //~^ ERROR cannot move a value of type (dyn Trait + 'static) } diff --git a/src/test/compile-fail/issue-5153.rs b/src/test/compile-fail/issue-5153.rs index b1d96f9b527..9b49886961d 100644 --- a/src/test/compile-fail/issue-5153.rs +++ b/src/test/compile-fail/issue-5153.rs @@ -18,5 +18,5 @@ impl Foo for isize { fn main() { (&5isize as &Foo).foo(); - //~^ ERROR: no method named `foo` found for type `&Foo` in the current scope + //~^ ERROR: no method named `foo` found for type `&dyn Foo` in the current scope } diff --git a/src/test/compile-fail/kindck-send-object.rs b/src/test/compile-fail/kindck-send-object.rs index a3eb47be3ee..82b97878549 100644 --- a/src/test/compile-fail/kindck-send-object.rs +++ b/src/test/compile-fail/kindck-send-object.rs @@ -20,12 +20,12 @@ trait Message : Send { } fn object_ref_with_static_bound_not_ok() { assert_send::<&'static (Dummy+'static)>(); - //~^ ERROR `Dummy + 'static` cannot be shared between threads safely [E0277] + //~^ ERROR `(dyn Dummy + 'static)` cannot be shared between threads safely [E0277] } fn box_object_with_no_bound_not_ok<'a>() { assert_send::<Box<Dummy>>(); - //~^ ERROR `Dummy` cannot be sent between threads safely + //~^ ERROR `dyn Dummy` cannot be sent between threads safely } fn object_with_send_bound_ok() { diff --git a/src/test/compile-fail/kindck-send-object1.rs b/src/test/compile-fail/kindck-send-object1.rs index 673a6abc5f0..853630aa416 100644 --- a/src/test/compile-fail/kindck-send-object1.rs +++ b/src/test/compile-fail/kindck-send-object1.rs @@ -18,7 +18,7 @@ trait Dummy { } // careful with object types, who knows what they close over... fn test51<'a>() { assert_send::<&'a Dummy>(); - //~^ ERROR `Dummy + 'a` cannot be shared between threads safely [E0277] + //~^ ERROR `(dyn Dummy + 'a)` cannot be shared between threads safely [E0277] } fn test52<'a>() { assert_send::<&'a (Dummy+Sync)>(); @@ -37,7 +37,7 @@ fn test61() { // them not ok fn test_71<'a>() { assert_send::<Box<Dummy+'a>>(); - //~^ ERROR `Dummy + 'a` cannot be sent between threads safely + //~^ ERROR `(dyn Dummy + 'a)` cannot be sent between threads safely } fn main() { } diff --git a/src/test/compile-fail/kindck-send-object2.rs b/src/test/compile-fail/kindck-send-object2.rs index 3a935af2000..0265f888e7c 100644 --- a/src/test/compile-fail/kindck-send-object2.rs +++ b/src/test/compile-fail/kindck-send-object2.rs @@ -15,12 +15,12 @@ trait Dummy { } fn test50() { assert_send::<&'static Dummy>(); - //~^ ERROR `Dummy + 'static` cannot be shared between threads safely [E0277] + //~^ ERROR `(dyn Dummy + 'static)` cannot be shared between threads safely [E0277] } fn test53() { assert_send::<Box<Dummy>>(); - //~^ ERROR `Dummy` cannot be sent between threads safely + //~^ ERROR `dyn Dummy` cannot be sent between threads safely } // ...unless they are properly bounded diff --git a/src/test/compile-fail/map-types.rs b/src/test/compile-fail/map-types.rs index 9dcf902a69f..e8ff9e817af 100644 --- a/src/test/compile-fail/map-types.rs +++ b/src/test/compile-fail/map-types.rs @@ -25,5 +25,5 @@ fn main() { let x: Box<HashMap<isize, isize>> = box HashMap::new(); let x: Box<Map<isize, isize>> = x; let y: Box<Map<usize, isize>> = Box::new(x); - //~^ ERROR `std::boxed::Box<Map<isize, isize>>: Map<usize, isize>` is not satisfied + //~^ ERROR `std::boxed::Box<dyn Map<isize, isize>>: Map<usize, isize>` is not satisfied } diff --git a/src/test/compile-fail/non-interger-atomic.rs b/src/test/compile-fail/non-interger-atomic.rs index a51a9e518ce..2a6e148ca79 100644 --- a/src/test/compile-fail/non-interger-atomic.rs +++ b/src/test/compile-fail/non-interger-atomic.rs @@ -61,22 +61,22 @@ pub unsafe fn test_Foo_cxchg(p: &mut Foo, v: Foo) { pub unsafe fn test_Bar_load(p: &mut Bar, v: Bar) { intrinsics::atomic_load(p); - //~^ ERROR expected basic integer type, found `&std::ops::Fn()` + //~^ ERROR expected basic integer type, found `&dyn std::ops::Fn()` } pub unsafe fn test_Bar_store(p: &mut Bar, v: Bar) { intrinsics::atomic_store(p, v); - //~^ ERROR expected basic integer type, found `&std::ops::Fn()` + //~^ ERROR expected basic integer type, found `&dyn std::ops::Fn()` } pub unsafe fn test_Bar_xchg(p: &mut Bar, v: Bar) { intrinsics::atomic_xchg(p, v); - //~^ ERROR expected basic integer type, found `&std::ops::Fn()` + //~^ ERROR expected basic integer type, found `&dyn std::ops::Fn()` } pub unsafe fn test_Bar_cxchg(p: &mut Bar, v: Bar) { intrinsics::atomic_cxchg(p, v, v); - //~^ ERROR expected basic integer type, found `&std::ops::Fn()` + //~^ ERROR expected basic integer type, found `&dyn std::ops::Fn()` } pub unsafe fn test_Quux_load(p: &mut Quux, v: Quux) { diff --git a/src/test/compile-fail/object-does-not-impl-trait.rs b/src/test/compile-fail/object-does-not-impl-trait.rs index 8babc734c84..30f8d5e2f45 100644 --- a/src/test/compile-fail/object-does-not-impl-trait.rs +++ b/src/test/compile-fail/object-does-not-impl-trait.rs @@ -14,5 +14,5 @@ trait Foo {} fn take_foo<F:Foo>(f: F) {} fn take_object(f: Box<Foo>) { take_foo(f); } -//~^ ERROR `std::boxed::Box<Foo>: Foo` is not satisfied +//~^ ERROR `std::boxed::Box<dyn Foo>: Foo` is not satisfied fn main() {} diff --git a/src/test/compile-fail/object-safety-by-value-self-use.rs b/src/test/compile-fail/object-safety-by-value-self-use.rs index 36356cb7d52..e575bbb6cea 100644 --- a/src/test/compile-fail/object-safety-by-value-self-use.rs +++ b/src/test/compile-fail/object-safety-by-value-self-use.rs @@ -22,7 +22,7 @@ trait Baz { } fn use_bar(t: Box<Bar>) { - t.bar() //~ ERROR cannot move a value of type Bar + t.bar() //~ ERROR cannot move a value of type (dyn Bar + 'static) } fn main() { } diff --git a/src/test/compile-fail/privacy/associated-item-privacy-type-binding.rs b/src/test/compile-fail/privacy/associated-item-privacy-type-binding.rs index c25616c5435..6019369aa2e 100644 --- a/src/test/compile-fail/privacy/associated-item-privacy-type-binding.rs +++ b/src/test/compile-fail/privacy/associated-item-privacy-type-binding.rs @@ -19,19 +19,19 @@ mod priv_trait { pub macro mac1() { let _: Box<PubTr<AssocTy = u8>>; - //~^ ERROR type `priv_trait::PubTr<AssocTy=u8> + '<empty>` is private - //~| ERROR type `priv_trait::PubTr<AssocTy=u8> + '<empty>` is private + //~^ ERROR type `(dyn priv_trait::PubTr<AssocTy=u8> + '<empty>)` is private + //~| ERROR type `(dyn priv_trait::PubTr<AssocTy=u8> + '<empty>)` is private type InSignatureTy2 = Box<PubTr<AssocTy = u8>>; - //~^ ERROR type `priv_trait::PubTr<AssocTy=u8> + 'static` is private + //~^ ERROR type `(dyn priv_trait::PubTr<AssocTy=u8> + 'static)` is private trait InSignatureTr2: PubTr<AssocTy = u8> {} //~^ ERROR trait `priv_trait::PrivTr` is private } pub macro mac2() { let _: Box<PrivTr<AssocTy = u8>>; - //~^ ERROR type `priv_trait::PrivTr<AssocTy=u8> + '<empty>` is private - //~| ERROR type `priv_trait::PrivTr<AssocTy=u8> + '<empty>` is private + //~^ ERROR type `(dyn priv_trait::PrivTr<AssocTy=u8> + '<empty>)` is private + //~| ERROR type `(dyn priv_trait::PrivTr<AssocTy=u8> + '<empty>)` is private type InSignatureTy1 = Box<PrivTr<AssocTy = u8>>; - //~^ ERROR type `priv_trait::PrivTr<AssocTy=u8> + 'static` is private + //~^ ERROR type `(dyn priv_trait::PrivTr<AssocTy=u8> + 'static)` is private trait InSignatureTr1: PrivTr<AssocTy = u8> {} //~^ ERROR trait `priv_trait::PrivTr` is private } diff --git a/src/test/compile-fail/private-inferred-type.rs b/src/test/compile-fail/private-inferred-type.rs index 5af8b063c16..3ca8b1eb2ed 100644 --- a/src/test/compile-fail/private-inferred-type.rs +++ b/src/test/compile-fail/private-inferred-type.rs @@ -129,7 +129,7 @@ fn main() { m::leak_anon2(); //~ ERROR type `m::Priv` is private m::leak_anon3(); //~ ERROR type `m::Priv` is private - m::leak_dyn1(); //~ ERROR type `m::Trait + 'static` is private + m::leak_dyn1(); //~ ERROR type `(dyn m::Trait + 'static)` is private m::leak_dyn2(); //~ ERROR type `m::Priv` is private m::leak_dyn3(); //~ ERROR type `m::Priv` is private diff --git a/src/test/compile-fail/trait-item-privacy.rs b/src/test/compile-fail/trait-item-privacy.rs index be0f7dd4e1c..f8e4f0d596e 100644 --- a/src/test/compile-fail/trait-item-privacy.rs +++ b/src/test/compile-fail/trait-item-privacy.rs @@ -110,9 +110,9 @@ fn check_assoc_const() { // A, B, C are resolved as inherent items, their traits don't need to be in scope C::A; //~ ERROR associated constant `A` is private //~^ ERROR the trait `assoc_const::C` cannot be made into an object - //~| ERROR the trait bound `assoc_const::C: assoc_const::A` is not satisfied + //~| ERROR the trait bound `dyn assoc_const::C: assoc_const::A` is not satisfied C::B; // ERROR the trait `assoc_const::C` cannot be made into an object - //~^ ERROR the trait bound `assoc_const::C: assoc_const::B` is not satisfied + //~^ ERROR the trait bound `dyn assoc_const::C: assoc_const::B` is not satisfied C::C; // OK } diff --git a/src/test/compile-fail/traits-repeated-supertrait-ambig.rs b/src/test/compile-fail/traits-repeated-supertrait-ambig.rs index 3fc0d638dd6..559871af72e 100644 --- a/src/test/compile-fail/traits-repeated-supertrait-ambig.rs +++ b/src/test/compile-fail/traits-repeated-supertrait-ambig.rs @@ -33,7 +33,7 @@ impl CompareTo<u64> for i64 { impl CompareToInts for i64 { } fn with_obj(c: &CompareToInts) -> bool { - c.same_as(22) //~ ERROR `CompareToInts: CompareTo<i32>` is not satisfied + c.same_as(22) //~ ERROR `dyn CompareToInts: CompareTo<i32>` is not satisfied } fn with_trait<C:CompareToInts>(c: &C) -> bool { @@ -41,7 +41,7 @@ fn with_trait<C:CompareToInts>(c: &C) -> bool { } fn with_ufcs1<C:CompareToInts>(c: &C) -> bool { - CompareToInts::same_as(c, 22) //~ ERROR `CompareToInts: CompareTo<i32>` is not satisfied + CompareToInts::same_as(c, 22) //~ ERROR `dyn CompareToInts: CompareTo<i32>` is not satisfied } fn with_ufcs2<C:CompareToInts>(c: &C) -> bool { diff --git a/src/test/compile-fail/trivial_casts.rs b/src/test/compile-fail/trivial_casts.rs index aabf0d26d5b..3f2bd2ffabf 100644 --- a/src/test/compile-fail/trivial_casts.rs +++ b/src/test/compile-fail/trivial_casts.rs @@ -59,25 +59,25 @@ pub fn main() { // unsize trait let x: &Bar = &Bar; - let _ = x as &Foo; //~ERROR trivial cast: `&Bar` as `&Foo` - let _ = x as *const Foo; //~ERROR trivial cast: `&Bar` as `*const Foo` + let _ = x as &Foo; //~ERROR trivial cast: `&Bar` as `&dyn Foo` + let _ = x as *const Foo; //~ERROR trivial cast: `&Bar` as `*const dyn Foo` let _: &Foo = x; let _: *const Foo = x; let x: &mut Bar = &mut Bar; - let _ = x as &mut Foo; //~ERROR trivial cast: `&mut Bar` as `&mut Foo` - let _ = x as *mut Foo; //~ERROR trivial cast: `&mut Bar` as `*mut Foo` + let _ = x as &mut Foo; //~ERROR trivial cast: `&mut Bar` as `&mut dyn Foo` + let _ = x as *mut Foo; //~ERROR trivial cast: `&mut Bar` as `*mut dyn Foo` let _: &mut Foo = x; let _: *mut Foo = x; let x: Box<Bar> = Box::new(Bar); - let _ = x as Box<Foo>; //~ERROR trivial cast: `std::boxed::Box<Bar>` as `std::boxed::Box<Foo>` + let _ = x as Box<Foo>; //~ERROR `std::boxed::Box<Bar>` as `std::boxed::Box<dyn Foo>` let x: Box<Bar> = Box::new(Bar); let _: Box<Foo> = x; // functions fn baz(_x: i32) {} - let _ = &baz as &Fn(i32); //~ERROR trivial cast: `&fn(i32) {main::baz}` as `&std::ops::Fn(i32)` + let _ = &baz as &Fn(i32); //~ERROR `&fn(i32) {main::baz}` as `&dyn std::ops::Fn(i32)` let _: &Fn(i32) = &baz; let x = |_x: i32| {}; let _ = &x as &Fn(i32); //~ERROR trivial cast diff --git a/src/test/compile-fail/type-mismatch-same-crate-name.rs b/src/test/compile-fail/type-mismatch-same-crate-name.rs index 4295d08a470..7e93f626cfc 100644 --- a/src/test/compile-fail/type-mismatch-same-crate-name.rs +++ b/src/test/compile-fail/type-mismatch-same-crate-name.rs @@ -33,7 +33,7 @@ fn main() { //~^ ERROR mismatched types //~| Perhaps two different versions of crate `crate_a1` //~| expected trait `main::a::Bar` - //~| expected type `std::boxed::Box<main::a::Bar + 'static>` - //~| found type `std::boxed::Box<main::a::Bar>` + //~| expected type `std::boxed::Box<(dyn main::a::Bar + 'static)>` + //~| found type `std::boxed::Box<dyn main::a::Bar>` } } diff --git a/src/test/compile-fail/type-parameter-defaults-referencing-Self-ppaux.rs b/src/test/compile-fail/type-parameter-defaults-referencing-Self-ppaux.rs index 09687724656..08988353886 100644 --- a/src/test/compile-fail/type-parameter-defaults-referencing-Self-ppaux.rs +++ b/src/test/compile-fail/type-parameter-defaults-referencing-Self-ppaux.rs @@ -23,5 +23,5 @@ fn main() { let x: i32 = 5; let y = x as MyAdd<i32>; //~^ ERROR E0038 - //~| ERROR cast to unsized type: `i32` as `MyAdd<i32>` + //~| ERROR cast to unsized type: `i32` as `dyn MyAdd<i32>` } diff --git a/src/test/mir-opt/end_region_6.rs b/src/test/mir-opt/end_region_6.rs index dadc755eb8c..30ba14c1bab 100644 --- a/src/test/mir-opt/end_region_6.rs +++ b/src/test/mir-opt/end_region_6.rs @@ -68,17 +68,17 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // fn main::{{closure}}(_1: [closure@NodeId(22) d:&'19s D]) -> i32 { // let mut _0: i32; // ... -// let _2: &'15_0rs D; +// let _2: &'16_0rs D; // ... // let mut _3: i32; // bb0: { // StorageLive(_2); -// _2 = &'15_0rs (*(_1.0: &'19s D)); +// _2 = &'16_0rs (*(_1.0: &'19s D)); // StorageLive(_3); // _3 = ((*_2).0: i32); // _0 = move _3; // StorageDead(_3); -// EndRegion('15_0rs); +// EndRegion('16_0rs); // StorageDead(_2); // return; // } diff --git a/src/test/mir-opt/end_region_7.rs b/src/test/mir-opt/end_region_7.rs index 1426174b482..6d6afa25ae3 100644 --- a/src/test/mir-opt/end_region_7.rs +++ b/src/test/mir-opt/end_region_7.rs @@ -76,17 +76,17 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // fn main::{{closure}}(_1: [closure@NodeId(22) d:D]) -> i32 { // let mut _0: i32; // ... -// let _2: &'15_0rs D; +// let _2: &'16_0rs D; // ... // let mut _3: i32; // bb0: { // StorageLive(_2); -// _2 = &'15_0rs (_1.0: D); +// _2 = &'16_0rs (_1.0: D); // StorageLive(_3); // _3 = ((*_2).0: i32); // _0 = move _3; // StorageDead(_3); -// EndRegion('15_0rs); +// EndRegion('16_0rs); // StorageDead(_2); // drop(_1) -> [return: bb2, unwind: bb1]; // } diff --git a/src/test/mir-opt/validate_1.rs b/src/test/mir-opt/validate_1.rs index e6cd5355000..c331276aade 100644 --- a/src/test/mir-opt/validate_1.rs +++ b/src/test/mir-opt/validate_1.rs @@ -64,14 +64,14 @@ fn main() { // bb0: { // Validate(Acquire, [_1: &ReFree(DefId(0/1:11 ~ validate_1[317d]::main[0]::{{closure}}[0]), BrEnv) [closure@NodeId(50)], _2: &ReFree(DefId(0/1:11 ~ validate_1[317d]::main[0]::{{closure}}[0]), BrAnon(0)) mut i32]); // StorageLive(_3); -// Validate(Suspend(ReScope(Remainder(BlockRemainder { block: ItemLocalId(22), first_statement_index: 0 }))), [(*_2): i32]); +// Validate(Suspend(ReScope(Remainder(BlockRemainder { block: ItemLocalId(25), first_statement_index: 0 }))), [(*_2): i32]); // _3 = &ReErased (*_2); -// Validate(Acquire, [(*_3): i32/ReScope(Remainder(BlockRemainder { block: ItemLocalId(22), first_statement_index: 0 })) (imm)]); +// Validate(Acquire, [(*_3): i32/ReScope(Remainder(BlockRemainder { block: ItemLocalId(25), first_statement_index: 0 })) (imm)]); // StorageLive(_4); // _4 = (*_3); // _0 = move _4; // StorageDead(_4); -// EndRegion(ReScope(Remainder(BlockRemainder { block: ItemLocalId(22), first_statement_index: 0 }))); +// EndRegion(ReScope(Remainder(BlockRemainder { block: ItemLocalId(25), first_statement_index: 0 }))); // StorageDead(_3); // return; // } diff --git a/src/test/mir-opt/validate_5.rs b/src/test/mir-opt/validate_5.rs index d8d83fb5b45..b4d4479bab9 100644 --- a/src/test/mir-opt/validate_5.rs +++ b/src/test/mir-opt/validate_5.rs @@ -53,12 +53,12 @@ fn main() { // StorageLive(_3); // StorageLive(_4); // StorageLive(_5); -// Validate(Suspend(ReScope(Node(ItemLocalId(9)))), [(*_2): i32]); +// Validate(Suspend(ReScope(Node(ItemLocalId(12)))), [(*_2): i32]); // _5 = &ReErased mut (*_2); -// Validate(Acquire, [(*_5): i32/ReScope(Node(ItemLocalId(9)))]); +// Validate(Acquire, [(*_5): i32/ReScope(Node(ItemLocalId(12)))]); // _4 = move _5 as *mut i32 (Misc); // _3 = move _4; -// EndRegion(ReScope(Node(ItemLocalId(9)))); +// EndRegion(ReScope(Node(ItemLocalId(12)))); // StorageDead(_4); // StorageDead(_5); // Validate(Release, [_0: bool, _3: *mut i32]); diff --git a/src/test/run-pass/issue-21058.rs b/src/test/run-pass/issue-21058.rs index 19cd1cf3df7..862439e21f4 100644 --- a/src/test/run-pass/issue-21058.rs +++ b/src/test/run-pass/issue-21058.rs @@ -26,5 +26,5 @@ fn main() { std::intrinsics::type_name::<NT>(), // DST std::intrinsics::type_name::<DST>() - )}, ("[u8]", "str", "std::marker::Send", "NT", "DST")); + )}, ("[u8]", "str", "dyn std::marker::Send", "NT", "DST")); } diff --git a/src/test/ui/anonymous-higher-ranked-lifetime.stderr b/src/test/ui/anonymous-higher-ranked-lifetime.stderr index 82f527f8cca..809d111d74e 100644 --- a/src/test/ui/anonymous-higher-ranked-lifetime.stderr +++ b/src/test/ui/anonymous-higher-ranked-lifetime.stderr @@ -74,7 +74,7 @@ error[E0631]: type mismatch in closure arguments LL | g1(|_: (), _: ()| {}); //~ ERROR type mismatch | ^^ -------------- found signature of `fn((), ()) -> _` | | - | expected signature of `for<'r> fn(&'r (), std::boxed::Box<for<'s> std::ops::Fn(&'s ()) + 'static>) -> _` + | expected signature of `for<'r> fn(&'r (), std::boxed::Box<(dyn for<'s> std::ops::Fn(&'s ()) + 'static)>) -> _` | note: required by `g1` --> $DIR/anonymous-higher-ranked-lifetime.rs:33:1 @@ -102,7 +102,7 @@ error[E0631]: type mismatch in closure arguments LL | g3(|_: (), _: ()| {}); //~ ERROR type mismatch | ^^ -------------- found signature of `fn((), ()) -> _` | | - | expected signature of `for<'s> fn(&'s (), std::boxed::Box<for<'r> std::ops::Fn(&'r ()) + 'static>) -> _` + | expected signature of `for<'s> fn(&'s (), std::boxed::Box<(dyn for<'r> std::ops::Fn(&'r ()) + 'static)>) -> _` | note: required by `g3` --> $DIR/anonymous-higher-ranked-lifetime.rs:35:1 @@ -130,7 +130,7 @@ error[E0631]: type mismatch in closure arguments LL | h1(|_: (), _: (), _: (), _: ()| {}); //~ ERROR type mismatch | ^^ ---------------------------- found signature of `fn((), (), (), ()) -> _` | | - | expected signature of `for<'r, 's> fn(&'r (), std::boxed::Box<for<'t0> std::ops::Fn(&'t0 ()) + 'static>, &'s (), for<'t0, 't1> fn(&'t0 (), &'t1 ())) -> _` + | expected signature of `for<'r, 's> fn(&'r (), std::boxed::Box<(dyn for<'t0> std::ops::Fn(&'t0 ()) + 'static)>, &'s (), for<'t0, 't1> fn(&'t0 (), &'t1 ())) -> _` | note: required by `h1` --> $DIR/anonymous-higher-ranked-lifetime.rs:39:1 @@ -144,7 +144,7 @@ error[E0631]: type mismatch in closure arguments LL | h2(|_: (), _: (), _: (), _: ()| {}); //~ ERROR type mismatch | ^^ ---------------------------- found signature of `fn((), (), (), ()) -> _` | | - | expected signature of `for<'r, 't0> fn(&'r (), std::boxed::Box<for<'s> std::ops::Fn(&'s ()) + 'static>, &'t0 (), for<'s, 't1> fn(&'s (), &'t1 ())) -> _` + | expected signature of `for<'r, 't0> fn(&'r (), std::boxed::Box<(dyn for<'s> std::ops::Fn(&'s ()) + 'static)>, &'t0 (), for<'s, 't1> fn(&'s (), &'t1 ())) -> _` | note: required by `h2` --> $DIR/anonymous-higher-ranked-lifetime.rs:40:1 diff --git a/src/test/ui/arbitrary-self-types-not-object-safe.stderr b/src/test/ui/arbitrary-self-types-not-object-safe.stderr index b3f9cbc587b..ec9e65fc4c6 100644 --- a/src/test/ui/arbitrary-self-types-not-object-safe.stderr +++ b/src/test/ui/arbitrary-self-types-not-object-safe.stderr @@ -13,7 +13,7 @@ LL | let x = Box::new(5usize) as Box<Foo>; | ^^^^^^^^^^^^^^^^ the trait `Foo` cannot be made into an object | = note: method `foo` has a non-standard `self` type - = note: required because of the requirements on the impl of `std::ops::CoerceUnsized<std::boxed::Box<Foo>>` for `std::boxed::Box<usize>` + = note: required because of the requirements on the impl of `std::ops::CoerceUnsized<std::boxed::Box<dyn Foo>>` for `std::boxed::Box<usize>` error: aborting due to 2 previous errors diff --git a/src/test/ui/cast-to-unsized-trait-object-suggestion.stderr b/src/test/ui/cast-to-unsized-trait-object-suggestion.stderr index 67c33740f19..1e871d47284 100644 --- a/src/test/ui/cast-to-unsized-trait-object-suggestion.stderr +++ b/src/test/ui/cast-to-unsized-trait-object-suggestion.stderr @@ -1,4 +1,4 @@ -error[E0620]: cast to unsized type: `&{integer}` as `std::marker::Send` +error[E0620]: cast to unsized type: `&{integer}` as `dyn std::marker::Send` --> $DIR/cast-to-unsized-trait-object-suggestion.rs:12:5 | LL | &1 as Send; //~ ERROR cast to unsized @@ -6,7 +6,7 @@ LL | &1 as Send; //~ ERROR cast to unsized | | | help: try casting to a reference instead: `&Send` -error[E0620]: cast to unsized type: `std::boxed::Box<{integer}>` as `std::marker::Send` +error[E0620]: cast to unsized type: `std::boxed::Box<{integer}>` as `dyn std::marker::Send` --> $DIR/cast-to-unsized-trait-object-suggestion.rs:13:5 | LL | Box::new(1) as Send; //~ ERROR cast to unsized diff --git a/src/test/ui/closure-array-break-length.rs b/src/test/ui/closure-array-break-length.rs new file mode 100644 index 00000000000..2e99921956a --- /dev/null +++ b/src/test/ui/closure-array-break-length.rs @@ -0,0 +1,17 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn main() { + |_: [_; continue]| {}; //~ ERROR: `continue` outside of loop + + while |_: [_; continue]| {} {} //~ ERROR: `break` or `continue` with no label + + while |_: [_; break]| {} {} //~ ERROR: `break` or `continue` with no label +} diff --git a/src/test/ui/closure-array-break-length.stderr b/src/test/ui/closure-array-break-length.stderr new file mode 100644 index 00000000000..139153992e2 --- /dev/null +++ b/src/test/ui/closure-array-break-length.stderr @@ -0,0 +1,22 @@ +error[E0268]: `continue` outside of loop + --> $DIR/closure-array-break-length.rs:12:13 + | +LL | |_: [_; continue]| {}; //~ ERROR: `continue` outside of loop + | ^^^^^^^^ cannot break outside of a loop + +error[E0590]: `break` or `continue` with no label in the condition of a `while` loop + --> $DIR/closure-array-break-length.rs:14:19 + | +LL | while |_: [_; continue]| {} {} //~ ERROR: `break` or `continue` with no label + | ^^^^^^^^ unlabeled `continue` in the condition of a `while` loop + +error[E0590]: `break` or `continue` with no label in the condition of a `while` loop + --> $DIR/closure-array-break-length.rs:16:19 + | +LL | while |_: [_; break]| {} {} //~ ERROR: `break` or `continue` with no label + | ^^^^^ unlabeled `break` in the condition of a `while` loop + +error: aborting due to 3 previous errors + +Some errors occurred: E0268, E0590. +For more information about an error, try `rustc --explain E0268`. diff --git a/src/test/ui/const-unsized.stderr b/src/test/ui/const-unsized.stderr index 2cde4aec2b5..d6fc5391ba8 100644 --- a/src/test/ui/const-unsized.stderr +++ b/src/test/ui/const-unsized.stderr @@ -1,10 +1,10 @@ -error[E0277]: the size for value values of type `std::fmt::Debug + std::marker::Sync + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn std::fmt::Debug + std::marker::Sync + 'static)` cannot be known at compilation time --> $DIR/const-unsized.rs:13:29 | LL | const CONST_0: Debug+Sync = *(&0 as &(Debug+Sync)); | ^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `std::fmt::Debug + std::marker::Sync + 'static` + = help: the trait `std::marker::Sized` is not implemented for `(dyn std::fmt::Debug + std::marker::Sync + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: constant expressions must have a statically known size @@ -18,13 +18,13 @@ LL | const CONST_FOO: str = *"foo"; = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: constant expressions must have a statically known size -error[E0277]: the size for value values of type `std::fmt::Debug + std::marker::Sync + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn std::fmt::Debug + std::marker::Sync + 'static)` cannot be known at compilation time --> $DIR/const-unsized.rs:19:31 | LL | static STATIC_1: Debug+Sync = *(&1 as &(Debug+Sync)); | ^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `std::fmt::Debug + std::marker::Sync + 'static` + = help: the trait `std::marker::Sized` is not implemented for `(dyn std::fmt::Debug + std::marker::Sync + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: constant expressions must have a statically known size diff --git a/src/test/ui/did_you_mean/bad-assoc-ty.stderr b/src/test/ui/did_you_mean/bad-assoc-ty.stderr index 169a12ef92e..33792d4f5b3 100644 --- a/src/test/ui/did_you_mean/bad-assoc-ty.stderr +++ b/src/test/ui/did_you_mean/bad-assoc-ty.stderr @@ -92,7 +92,7 @@ error[E0223]: ambiguous associated type LL | type G = 'static + (Send)::AssocTy; | ^^^^^^^^^^^^^^^^^^^^^^^^^ ambiguous associated type | - = note: specify the type using the syntax `<std::marker::Send + 'static as Trait>::AssocTy` + = note: specify the type using the syntax `<(dyn std::marker::Send + 'static) as Trait>::AssocTy` error[E0223]: ambiguous associated type --> $DIR/bad-assoc-ty.rs:43:10 @@ -100,7 +100,7 @@ error[E0223]: ambiguous associated type LL | type H = Fn(u8) -> (u8)::Output; | ^^^^^^^^^^^^^^^^^^^^^^ ambiguous associated type | - = note: specify the type using the syntax `<std::ops::Fn(u8) -> u8 + 'static as Trait>::Output` + = note: specify the type using the syntax `<(dyn std::ops::Fn(u8) -> u8 + 'static) as Trait>::Output` error: aborting due to 15 previous errors diff --git a/src/test/ui/error-codes/E0033-teach.stderr b/src/test/ui/error-codes/E0033-teach.stderr index c74485781c1..2fac6080f49 100644 --- a/src/test/ui/error-codes/E0033-teach.stderr +++ b/src/test/ui/error-codes/E0033-teach.stderr @@ -12,11 +12,11 @@ LL | let trait_obj: &SomeTrait = SomeTrait; | = note: method `foo` has no receiver -error[E0033]: type `&SomeTrait` cannot be dereferenced +error[E0033]: type `&dyn SomeTrait` cannot be dereferenced --> $DIR/E0033-teach.rs:23:9 | LL | let &invalid = trait_obj; - | ^^^^^^^^ type `&SomeTrait` cannot be dereferenced + | ^^^^^^^^ type `&dyn SomeTrait` cannot be dereferenced | = note: This error indicates that a pointer to a trait type cannot be implicitly dereferenced by a pattern. Every trait defines a type, but because the size of trait implementors isn't fixed, this type has no compile-time size. Therefore, all accesses to trait types must be through pointers. If you encounter this error you should try to avoid dereferencing the pointer. diff --git a/src/test/ui/error-codes/E0033.stderr b/src/test/ui/error-codes/E0033.stderr index a1e72d6f669..5d789566beb 100644 --- a/src/test/ui/error-codes/E0033.stderr +++ b/src/test/ui/error-codes/E0033.stderr @@ -12,11 +12,11 @@ LL | let trait_obj: &SomeTrait = SomeTrait; | = note: method `foo` has no receiver -error[E0033]: type `&SomeTrait` cannot be dereferenced +error[E0033]: type `&dyn SomeTrait` cannot be dereferenced --> $DIR/E0033.rs:21:9 | LL | let &invalid = trait_obj; - | ^^^^^^^^ type `&SomeTrait` cannot be dereferenced + | ^^^^^^^^ type `&dyn SomeTrait` cannot be dereferenced error: aborting due to 3 previous errors diff --git a/src/test/ui/error-codes/E0558.stderr b/src/test/ui/error-codes/E0558.stderr index 0cb8af99294..0777c44058f 100644 --- a/src/test/ui/error-codes/E0558.stderr +++ b/src/test/ui/error-codes/E0558.stderr @@ -1,4 +1,4 @@ -error[E0558]: export_name attribute has invalid format +error[E0558]: `export_name` attribute has invalid format --> $DIR/E0558.rs:11:1 | LL | #[export_name] diff --git a/src/test/ui/error-codes/E0648.rs b/src/test/ui/error-codes/E0648.rs new file mode 100644 index 00000000000..d3eac60de99 --- /dev/null +++ b/src/test/ui/error-codes/E0648.rs @@ -0,0 +1,14 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#[export_name="\0foo"] //~ ERROR E0648 +pub fn bar() {} + +fn main() {} diff --git a/src/test/ui/error-codes/E0648.stderr b/src/test/ui/error-codes/E0648.stderr new file mode 100644 index 00000000000..1e11705e9b9 --- /dev/null +++ b/src/test/ui/error-codes/E0648.stderr @@ -0,0 +1,9 @@ +error[E0648]: `export_name` may not contain null characters + --> $DIR/E0648.rs:11:1 + | +LL | #[export_name="/0foo"] //~ ERROR E0648 + | ^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0648`. diff --git a/src/test/ui/error-codes/E0657.stderr b/src/test/ui/error-codes/E0657.stderr index 23b9666de3c..fb7f88d5ca9 100644 --- a/src/test/ui/error-codes/E0657.stderr +++ b/src/test/ui/error-codes/E0657.stderr @@ -16,7 +16,7 @@ error[E0308]: mismatched types LL | () //~ ERROR mismatched types | ^^ expected struct `std::boxed::Box`, found () | - = note: expected type `std::boxed::Box<Id<_> + 'static>` + = note: expected type `std::boxed::Box<(dyn Id<_> + 'static)>` found type `()` error[E0308]: mismatched types @@ -25,7 +25,7 @@ error[E0308]: mismatched types LL | () //~ ERROR mismatched types | ^^ expected struct `std::boxed::Box`, found () | - = note: expected type `std::boxed::Box<Id<_> + 'static>` + = note: expected type `std::boxed::Box<(dyn Id<_> + 'static)>` found type `()` error: aborting due to 4 previous errors diff --git a/src/test/ui/fat-ptr-cast.stderr b/src/test/ui/fat-ptr-cast.stderr index cf1dcfcb8ad..778a4cf1fa0 100644 --- a/src/test/ui/fat-ptr-cast.stderr +++ b/src/test/ui/fat-ptr-cast.stderr @@ -52,7 +52,7 @@ error[E0607]: cannot cast thin pointer `*const i32` to fat pointer `*const [i32] LL | q as *const [i32]; //~ ERROR cannot cast | ^^^^^^^^^^^^^^^^^ -error[E0606]: casting `usize` as `*mut Trait + 'static` is invalid +error[E0606]: casting `usize` as `*mut (dyn Trait + 'static)` is invalid --> $DIR/fat-ptr-cast.rs:32:37 | LL | let t: *mut (Trait + 'static) = 0 as *mut _; //~ ERROR casting diff --git a/src/test/ui/feature-gate-trivial_bounds.stderr b/src/test/ui/feature-gate-trivial_bounds.stderr index db280f2d1f7..19a6a863795 100644 --- a/src/test/ui/feature-gate-trivial_bounds.stderr +++ b/src/test/ui/feature-gate-trivial_bounds.stderr @@ -98,7 +98,7 @@ LL | struct TwoStrs(str, str) where str: Sized; //~ ERROR = help: see issue #48214 = help: add #![feature(trivial_bounds)] to the crate attributes to enable -error[E0277]: the size for value values of type `A + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn A + 'static)` cannot be known at compilation time --> $DIR/feature-gate-trivial_bounds.rs:65:1 | LL | / fn unsized_local() where Dst<A>: Sized { //~ ERROR @@ -106,9 +106,9 @@ LL | | let x: Dst<A> = *(Box::new(Dst { x: 1 }) as Box<Dst<A>>); LL | | } | |_^ doesn't have a size known at compile-time | - = help: within `Dst<A + 'static>`, the trait `std::marker::Sized` is not implemented for `A + 'static` + = help: within `Dst<(dyn A + 'static)>`, the trait `std::marker::Sized` is not implemented for `(dyn A + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> - = note: required because it appears within the type `Dst<A + 'static>` + = note: required because it appears within the type `Dst<(dyn A + 'static)>` = help: see issue #48214 = help: add #![feature(trivial_bounds)] to the crate attributes to enable diff --git a/src/test/ui/fmt/send-sync.stderr b/src/test/ui/fmt/send-sync.stderr index 807b499155b..0d9239d7227 100644 --- a/src/test/ui/fmt/send-sync.stderr +++ b/src/test/ui/fmt/send-sync.stderr @@ -1,11 +1,11 @@ -error[E0277]: `*mut std::ops::Fn() + 'static` cannot be shared between threads safely +error[E0277]: `*mut (dyn std::ops::Fn() + 'static)` cannot be shared between threads safely --> $DIR/send-sync.rs:18:5 | LL | send(format_args!("{:?}", c)); //~ ERROR E0277 - | ^^^^ `*mut std::ops::Fn() + 'static` cannot be shared between threads safely + | ^^^^ `*mut (dyn std::ops::Fn() + 'static)` cannot be shared between threads safely | - = help: within `[std::fmt::ArgumentV1<'_>]`, the trait `std::marker::Sync` is not implemented for `*mut std::ops::Fn() + 'static` - = note: required because it appears within the type `std::marker::PhantomData<*mut std::ops::Fn() + 'static>` + = help: within `[std::fmt::ArgumentV1<'_>]`, the trait `std::marker::Sync` is not implemented for `*mut (dyn std::ops::Fn() + 'static)` + = note: required because it appears within the type `std::marker::PhantomData<*mut (dyn std::ops::Fn() + 'static)>` = note: required because it appears within the type `core::fmt::Void` = note: required because it appears within the type `&core::fmt::Void` = note: required because it appears within the type `std::fmt::ArgumentV1<'_>` @@ -18,14 +18,14 @@ note: required by `send` LL | fn send<T: Send>(_: T) {} | ^^^^^^^^^^^^^^^^^^^^^^ -error[E0277]: `*mut std::ops::Fn() + 'static` cannot be shared between threads safely +error[E0277]: `*mut (dyn std::ops::Fn() + 'static)` cannot be shared between threads safely --> $DIR/send-sync.rs:19:5 | LL | sync(format_args!("{:?}", c)); //~ ERROR E0277 - | ^^^^ `*mut std::ops::Fn() + 'static` cannot be shared between threads safely + | ^^^^ `*mut (dyn std::ops::Fn() + 'static)` cannot be shared between threads safely | - = help: within `std::fmt::Arguments<'_>`, the trait `std::marker::Sync` is not implemented for `*mut std::ops::Fn() + 'static` - = note: required because it appears within the type `std::marker::PhantomData<*mut std::ops::Fn() + 'static>` + = help: within `std::fmt::Arguments<'_>`, the trait `std::marker::Sync` is not implemented for `*mut (dyn std::ops::Fn() + 'static)` + = note: required because it appears within the type `std::marker::PhantomData<*mut (dyn std::ops::Fn() + 'static)>` = note: required because it appears within the type `core::fmt::Void` = note: required because it appears within the type `&core::fmt::Void` = note: required because it appears within the type `std::fmt::ArgumentV1<'_>` diff --git a/src/test/ui/in-band-lifetimes/impl/dyn-trait.stderr b/src/test/ui/in-band-lifetimes/impl/dyn-trait.stderr index 201470abe67..07b86228f61 100644 --- a/src/test/ui/in-band-lifetimes/impl/dyn-trait.stderr +++ b/src/test/ui/in-band-lifetimes/impl/dyn-trait.stderr @@ -10,8 +10,8 @@ note: first, the lifetime cannot outlive the lifetime 'a as defined on the funct LL | fn with_dyn_debug_static<'a>(x: Box<dyn Debug + 'a>) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: ...so that the expression is assignable: - expected std::boxed::Box<std::fmt::Debug> - found std::boxed::Box<std::fmt::Debug + 'a> + expected std::boxed::Box<dyn std::fmt::Debug> + found std::boxed::Box<(dyn std::fmt::Debug + 'a)> = note: but, the lifetime must be valid for the static lifetime... = note: ...so that the types are compatible: expected StaticTrait diff --git a/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr b/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr index 37b586e1e3b..169369c304e 100644 --- a/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr +++ b/src/test/ui/in-band-lifetimes/mismatched_trait_impl-2.stderr @@ -13,8 +13,8 @@ LL | | } | |_____^ = note: ...but the lifetime must also be valid for the static lifetime... = note: ...so that the method type is compatible with trait: - expected fn(&Struct) -> &Trait + 'static - found fn(&Struct) -> &Trait + expected fn(&Struct) -> &(dyn Trait + 'static) + found fn(&Struct) -> &dyn Trait error: aborting due to previous error diff --git a/src/test/ui/issue-17441.rs b/src/test/ui/issue-17441.rs index c7b07701461..5432d5f5ed9 100644 --- a/src/test/ui/issue-17441.rs +++ b/src/test/ui/issue-17441.rs @@ -13,10 +13,10 @@ fn main() { //~^ ERROR cast to unsized type: `&[usize; 2]` as `[usize]` let _bar = Box::new(1_usize) as std::fmt::Debug; - //~^ ERROR cast to unsized type: `std::boxed::Box<usize>` as `std::fmt::Debug` + //~^ ERROR cast to unsized type: `std::boxed::Box<usize>` as `dyn std::fmt::Debug` let _baz = 1_usize as std::fmt::Debug; - //~^ ERROR cast to unsized type: `usize` as `std::fmt::Debug` + //~^ ERROR cast to unsized type: `usize` as `dyn std::fmt::Debug` let _quux = [1_usize, 2] as [usize]; //~^ ERROR cast to unsized type: `[usize; 2]` as `[usize]` diff --git a/src/test/ui/issue-17441.stderr b/src/test/ui/issue-17441.stderr index 80ba49cce1a..6c7e883f9f9 100644 --- a/src/test/ui/issue-17441.stderr +++ b/src/test/ui/issue-17441.stderr @@ -10,7 +10,7 @@ help: consider using an implicit coercion to `&[usize]` instead LL | let _foo = &[1_usize, 2] as [usize]; | ^^^^^^^^^^^^^^^^^^^^^^^^ -error[E0620]: cast to unsized type: `std::boxed::Box<usize>` as `std::fmt::Debug` +error[E0620]: cast to unsized type: `std::boxed::Box<usize>` as `dyn std::fmt::Debug` --> $DIR/issue-17441.rs:15:16 | LL | let _bar = Box::new(1_usize) as std::fmt::Debug; @@ -18,7 +18,7 @@ LL | let _bar = Box::new(1_usize) as std::fmt::Debug; | | | help: try casting to a `Box` instead: `Box<std::fmt::Debug>` -error[E0620]: cast to unsized type: `usize` as `std::fmt::Debug` +error[E0620]: cast to unsized type: `usize` as `dyn std::fmt::Debug` --> $DIR/issue-17441.rs:18:16 | LL | let _baz = 1_usize as std::fmt::Debug; diff --git a/src/test/ui/issue-20692.stderr b/src/test/ui/issue-20692.stderr index 1316773f6b7..156ebd920f0 100644 --- a/src/test/ui/issue-20692.stderr +++ b/src/test/ui/issue-20692.stderr @@ -13,7 +13,7 @@ LL | let _ = x | ^ the trait `Array` cannot be made into an object | = note: the trait cannot require that `Self : Sized` - = note: required because of the requirements on the impl of `std::ops::CoerceUnsized<&Array>` for `&T` + = note: required because of the requirements on the impl of `std::ops::CoerceUnsized<&dyn Array>` for `&T` error: aborting due to 2 previous errors diff --git a/src/test/ui/issue-50577.rs b/src/test/ui/issue-50577.rs new file mode 100644 index 00000000000..a3bb6872424 --- /dev/null +++ b/src/test/ui/issue-50577.rs @@ -0,0 +1,15 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn main() { + enum Foo { + Drop = assert_eq!(1, 1) + } +} diff --git a/src/test/ui/issue-50577.stderr b/src/test/ui/issue-50577.stderr new file mode 100644 index 00000000000..8751303a0db --- /dev/null +++ b/src/test/ui/issue-50577.stderr @@ -0,0 +1,13 @@ +error[E0317]: if may be missing an else clause + --> $DIR/issue-50577.rs:13:16 + | +LL | Drop = assert_eq!(1, 1) + | ^^^^^^^^^^^^^^^^ expected (), found isize + | + = note: expected type `()` + found type `isize` + = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0317`. diff --git a/src/test/ui/lint-ctypes.rs b/src/test/ui/lint-ctypes.rs index 4b20001457f..7f22dc8739e 100644 --- a/src/test/ui/lint-ctypes.rs +++ b/src/test/ui/lint-ctypes.rs @@ -59,7 +59,7 @@ extern { pub fn char_type(p: char); //~ ERROR uses type `char` pub fn i128_type(p: i128); //~ ERROR uses type `i128` pub fn u128_type(p: u128); //~ ERROR uses type `u128` - pub fn trait_type(p: &Clone); //~ ERROR uses type `std::clone::Clone` + pub fn trait_type(p: &Clone); //~ ERROR uses type `dyn std::clone::Clone` pub fn tuple_type(p: (i32, i32)); //~ ERROR uses type `(i32, i32)` pub fn tuple_type2(p: I32Pair); //~ ERROR uses type `(i32, i32)` pub fn zero_size(p: ZeroSize); //~ ERROR struct has no fields diff --git a/src/test/ui/lint-ctypes.stderr b/src/test/ui/lint-ctypes.stderr index 76b500e7d23..d1ef3a7a19c 100644 --- a/src/test/ui/lint-ctypes.stderr +++ b/src/test/ui/lint-ctypes.stderr @@ -73,10 +73,10 @@ error: `extern` block uses type `u128` which is not FFI-safe: 128-bit integers d LL | pub fn u128_type(p: u128); //~ ERROR uses type `u128` | ^^^^ -error: `extern` block uses type `std::clone::Clone` which is not FFI-safe: trait objects have no C equivalent +error: `extern` block uses type `dyn std::clone::Clone` which is not FFI-safe: trait objects have no C equivalent --> $DIR/lint-ctypes.rs:62:26 | -LL | pub fn trait_type(p: &Clone); //~ ERROR uses type `std::clone::Clone` +LL | pub fn trait_type(p: &Clone); //~ ERROR uses type `dyn std::clone::Clone` | ^^^^^^ error: `extern` block uses type `(i32, i32)` which is not FFI-safe: tuples have unspecified layout diff --git a/src/test/ui/lub-glb/old-lub-glb-object.stderr b/src/test/ui/lub-glb/old-lub-glb-object.stderr index 6a69e7cc717..79442bd108a 100644 --- a/src/test/ui/lub-glb/old-lub-glb-object.stderr +++ b/src/test/ui/lub-glb/old-lub-glb-object.stderr @@ -9,8 +9,8 @@ LL | | _ => y, LL | | }; | |_____^ expected bound lifetime parameter 'a, found concrete lifetime | - = note: expected type `&for<'a, 'b> Foo<&'a u8, &'b u8>` - found type `&for<'a> Foo<&'a u8, &'a u8>` + = note: expected type `&dyn for<'a, 'b> Foo<&'a u8, &'b u8>` + found type `&dyn for<'a> Foo<&'a u8, &'a u8>` = note: this was previously accepted by the compiler but has been phased out = note: for more information, see https://github.com/rust-lang/rust/issues/45852 diff --git a/src/test/ui/mismatched_types/cast-rfc0401.stderr b/src/test/ui/mismatched_types/cast-rfc0401.stderr index feaf492837f..9335795f6b8 100644 --- a/src/test/ui/mismatched_types/cast-rfc0401.stderr +++ b/src/test/ui/mismatched_types/cast-rfc0401.stderr @@ -162,13 +162,13 @@ error[E0607]: cannot cast thin pointer `*const u8` to fat pointer `*const [u8]` LL | let _ = v as *const [u8]; //~ ERROR cannot cast | ^^^^^^^^^^^^^^^^ -error[E0606]: casting `&Foo` as `*const str` is invalid +error[E0606]: casting `&dyn Foo` as `*const str` is invalid --> $DIR/cast-rfc0401.rs:64:13 | LL | let _ = foo as *const str; //~ ERROR is invalid | ^^^^^^^^^^^^^^^^^ -error[E0606]: casting `&Foo` as `*mut str` is invalid +error[E0606]: casting `&dyn Foo` as `*mut str` is invalid --> $DIR/cast-rfc0401.rs:65:13 | LL | let _ = foo as *mut str; //~ ERROR is invalid @@ -200,7 +200,7 @@ LL | let _ = fat_sv as usize; //~ ERROR is invalid | = help: cast through a thin pointer first -error[E0606]: casting `*const Foo` as `*const [u16]` is invalid +error[E0606]: casting `*const dyn Foo` as `*const [u16]` is invalid --> $DIR/cast-rfc0401.rs:78:13 | LL | let _ = cf as *const [u16]; //~ ERROR is invalid @@ -208,7 +208,7 @@ LL | let _ = cf as *const [u16]; //~ ERROR is invalid | = note: vtable kinds may not match -error[E0606]: casting `*const Foo` as `*const Bar` is invalid +error[E0606]: casting `*const dyn Foo` as `*const dyn Bar` is invalid --> $DIR/cast-rfc0401.rs:79:13 | LL | let _ = cf as *const Bar; //~ ERROR is invalid @@ -224,7 +224,7 @@ LL | let _ = fat_v as *const Foo; //~ ERROR the size for value values of typ | = help: the trait `std::marker::Sized` is not implemented for `[u8]` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> - = note: required for the cast to the object type `Foo` + = note: required for the cast to the object type `dyn Foo` error[E0277]: the size for value values of type `str` cannot be known at compilation time --> $DIR/cast-rfc0401.rs:72:13 @@ -234,7 +234,7 @@ LL | let _ = a as *const Foo; //~ ERROR the size for value values of type | = help: the trait `std::marker::Sized` is not implemented for `str` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> - = note: required for the cast to the object type `Foo` + = note: required for the cast to the object type `dyn Foo` error[E0606]: casting `&{float}` as `f32` is invalid --> $DIR/cast-rfc0401.rs:81:30 diff --git a/src/test/ui/mismatched_types/issue-19109.stderr b/src/test/ui/mismatched_types/issue-19109.stderr index c838c617ae4..018ea941d12 100644 --- a/src/test/ui/mismatched_types/issue-19109.stderr +++ b/src/test/ui/mismatched_types/issue-19109.stderr @@ -2,12 +2,12 @@ error[E0308]: mismatched types --> $DIR/issue-19109.rs:14:5 | LL | fn function(t: &mut Trait) { - | - help: try adding a return type: `-> *mut Trait` + | - help: try adding a return type: `-> *mut dyn Trait` LL | t as *mut Trait | ^^^^^^^^^^^^^^^ expected (), found *-ptr | = note: expected type `()` - found type `*mut Trait` + found type `*mut dyn Trait` error: aborting due to previous error diff --git a/src/test/ui/mismatched_types/trait-bounds-cant-coerce.stderr b/src/test/ui/mismatched_types/trait-bounds-cant-coerce.stderr index bbe9053430a..15c9fd6bf8f 100644 --- a/src/test/ui/mismatched_types/trait-bounds-cant-coerce.stderr +++ b/src/test/ui/mismatched_types/trait-bounds-cant-coerce.stderr @@ -4,8 +4,8 @@ error[E0308]: mismatched types LL | a(x); //~ ERROR mismatched types [E0308] | ^ expected trait `Foo + std::marker::Send`, found trait `Foo` | - = note: expected type `std::boxed::Box<Foo + std::marker::Send + 'static>` - found type `std::boxed::Box<Foo + 'static>` + = note: expected type `std::boxed::Box<(dyn Foo + std::marker::Send + 'static)>` + found type `std::boxed::Box<(dyn Foo + 'static)>` error: aborting due to previous error diff --git a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr b/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr index 3689ca74adb..e0705113577 100644 --- a/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr +++ b/src/test/ui/nll/ty-outlives/projection-no-regions-closure.stderr @@ -20,7 +20,7 @@ LL | with_signature(x, |mut y| Box::new(y.next())) '_#1r, T, i32, - extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<Anything + '_#2r> + extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#2r)> ] = note: number of external vids: 3 = note: where <T as std::iter::Iterator>::Item: '_#2r @@ -60,7 +60,7 @@ LL | with_signature(x, |mut y| Box::new(y.next())) '_#1r, T, i32, - extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<Anything + '_#2r> + extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#2r)> ] = note: number of external vids: 3 = note: where <T as std::iter::Iterator>::Item: '_#2r @@ -92,7 +92,7 @@ LL | with_signature(x, |mut y| Box::new(y.next())) '_#2r, T, i32, - extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<Anything + '_#3r> + extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#3r)> ] = note: number of external vids: 4 = note: where <T as std::iter::Iterator>::Item: '_#3r @@ -134,7 +134,7 @@ LL | with_signature(x, |mut y| Box::new(y.next())) '_#2r, T, i32, - extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<Anything + '_#3r> + extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#3r)> ] = note: number of external vids: 4 = note: where <T as std::iter::Iterator>::Item: '_#3r diff --git a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr index 59a8a39a7b0..39ad96cc6cd 100644 --- a/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr +++ b/src/test/ui/nll/ty-outlives/ty-param-closure-outlives-from-return-type.stderr @@ -20,7 +20,7 @@ LL | with_signature(x, |y| y) '_#1r, T, i32, - extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<std::fmt::Debug + '_#2r> + extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn std::fmt::Debug + '_#2r)> ] = note: number of external vids: 3 = note: where T: '_#2r diff --git a/src/test/ui/resolve/issue-5035-2.stderr b/src/test/ui/resolve/issue-5035-2.stderr index efcd0b36248..72bd270165f 100644 --- a/src/test/ui/resolve/issue-5035-2.stderr +++ b/src/test/ui/resolve/issue-5035-2.stderr @@ -1,10 +1,10 @@ -error[E0277]: the size for value values of type `I + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn I + 'static)` cannot be known at compilation time --> $DIR/issue-5035-2.rs:14:8 | LL | fn foo(_x: K) {} | ^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `I + 'static` + = help: the trait `std::marker::Sized` is not implemented for `(dyn I + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: all local variables must have a statically known size diff --git a/src/test/ui/span/borrowck-object-mutability.nll.stderr b/src/test/ui/span/borrowck-object-mutability.nll.stderr index cf615eed556..b318e778f87 100644 --- a/src/test/ui/span/borrowck-object-mutability.nll.stderr +++ b/src/test/ui/span/borrowck-object-mutability.nll.stderr @@ -2,7 +2,7 @@ error[E0596]: cannot borrow immutable item `*x` as mutable --> $DIR/borrowck-object-mutability.rs:19:5 | LL | fn borrowed_receiver(x: &Foo) { - | ---- help: consider changing this to be a mutable reference: `&mut Foo` + | ---- help: consider changing this to be a mutable reference: `&mut dyn Foo` LL | x.borrowed(); LL | x.borrowed_mut(); //~ ERROR cannot borrow | ^ `x` is a `&` reference, so the data it refers to cannot be borrowed as mutable diff --git a/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr b/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr index bd5efcd9fee..9049ffd4090 100644 --- a/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr +++ b/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr @@ -75,7 +75,7 @@ LL | w.wrap.not_closure(); | = help: did you mean to write `w.wrap.not_closure` instead of `w.wrap.not_closure(...)`? -error[E0599]: no method named `closure` found for type `Obj<std::boxed::Box<std::boxed::FnBox<(), Output=u32> + 'static>>` in the current scope +error[E0599]: no method named `closure` found for type `Obj<std::boxed::Box<(dyn std::boxed::FnBox<(), Output=u32> + 'static)>>` in the current scope --> $DIR/issue-2392.rs:72:24 | LL | struct Obj<F> where F: FnOnce() -> u32 { diff --git a/src/test/ui/trivial-bounds-inconsistent-sized.stderr b/src/test/ui/trivial-bounds-inconsistent-sized.stderr index ee2ff7d7861..e18018c6f0c 100644 --- a/src/test/ui/trivial-bounds-inconsistent-sized.stderr +++ b/src/test/ui/trivial-bounds-inconsistent-sized.stderr @@ -6,7 +6,7 @@ LL | struct S(str, str) where str: Sized; | = note: #[warn(trivial_bounds)] on by default -warning: Trait bound for<'a> T<A + 'a>: std::marker::Sized does not depend on any type or lifetime parameters +warning: Trait bound for<'a> T<(dyn A + 'a)>: std::marker::Sized does not depend on any type or lifetime parameters --> $DIR/trivial-bounds-inconsistent-sized.rs:26:1 | LL | / fn unsized_local() where for<'a> T<A + 'a>: Sized { diff --git a/src/test/ui/trivial-bounds-inconsistent.stderr b/src/test/ui/trivial-bounds-inconsistent.stderr index ee3c7518294..85b16b17042 100644 --- a/src/test/ui/trivial-bounds-inconsistent.stderr +++ b/src/test/ui/trivial-bounds-inconsistent.stderr @@ -78,7 +78,7 @@ warning: Trait bound str: std::marker::Sized does not depend on any type or life LL | struct TwoStrs(str, str) where str: Sized; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -warning: Trait bound for<'a> Dst<A + 'a>: std::marker::Sized does not depend on any type or lifetime parameters +warning: Trait bound for<'a> Dst<(dyn A + 'a)>: std::marker::Sized does not depend on any type or lifetime parameters --> $DIR/trivial-bounds-inconsistent.rs:65:1 | LL | / fn unsized_local() where for<'a> Dst<A + 'a>: Sized { diff --git a/src/test/ui/underscore-lifetime/dyn-trait-underscore.stderr b/src/test/ui/underscore-lifetime/dyn-trait-underscore.stderr index 98249d3f2b5..cb545ca008d 100644 --- a/src/test/ui/underscore-lifetime/dyn-trait-underscore.stderr +++ b/src/test/ui/underscore-lifetime/dyn-trait-underscore.stderr @@ -19,8 +19,8 @@ LL | Box::new(items.iter()) //~ ERROR cannot infer an appropriate lifetime | ^^^^^ = note: but, the lifetime must be valid for the static lifetime... = note: ...so that the expression is assignable: - expected std::boxed::Box<std::iter::Iterator<Item=&T> + 'static> - found std::boxed::Box<std::iter::Iterator<Item=&T>> + expected std::boxed::Box<(dyn std::iter::Iterator<Item=&T> + 'static)> + found std::boxed::Box<dyn std::iter::Iterator<Item=&T>> error: aborting due to previous error diff --git a/src/test/ui/unsized-enum2.stderr b/src/test/ui/unsized-enum2.stderr index ff2aa1d1ef9..1f30c815d30 100644 --- a/src/test/ui/unsized-enum2.stderr +++ b/src/test/ui/unsized-enum2.stderr @@ -82,43 +82,43 @@ LL | VH{u: isize, x: [u32]}, = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `Foo + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn Foo + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:63:8 | LL | VM(Foo), | ^^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `Foo + 'static` + = help: the trait `std::marker::Sized` is not implemented for `(dyn Foo + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `Bar + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn Bar + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:65:8 | LL | VN{x: Bar}, | ^^^^^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `Bar + 'static` + = help: the trait `std::marker::Sized` is not implemented for `(dyn Bar + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `FooBar + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn FooBar + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:67:15 | LL | VO(isize, FooBar), | ^^^^^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `FooBar + 'static` + = help: the trait `std::marker::Sized` is not implemented for `(dyn FooBar + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `BarFoo + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn BarFoo + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:69:18 | LL | VP{u: isize, x: BarFoo}, | ^^^^^^^^^ doesn't have a size known at compile-time | - = help: the trait `std::marker::Sized` is not implemented for `BarFoo + 'static` + = help: the trait `std::marker::Sized` is not implemented for `(dyn BarFoo + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: no field of an enum variant may have a dynamically sized type @@ -162,46 +162,46 @@ LL | VT{u: isize, x: <&'static [i32] as Deref>::Target}, = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `PathHelper1 + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn PathHelper1 + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:53:8 | LL | VI(Path1), | ^^^^^ doesn't have a size known at compile-time | - = help: within `Path1`, the trait `std::marker::Sized` is not implemented for `PathHelper1 + 'static` + = help: within `Path1`, the trait `std::marker::Sized` is not implemented for `(dyn PathHelper1 + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: required because it appears within the type `Path1` = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `PathHelper2 + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn PathHelper2 + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:55:8 | LL | VJ{x: Path2}, | ^^^^^^^^ doesn't have a size known at compile-time | - = help: within `Path2`, the trait `std::marker::Sized` is not implemented for `PathHelper2 + 'static` + = help: within `Path2`, the trait `std::marker::Sized` is not implemented for `(dyn PathHelper2 + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: required because it appears within the type `Path2` = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `PathHelper3 + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn PathHelper3 + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:57:15 | LL | VK(isize, Path3), | ^^^^^ doesn't have a size known at compile-time | - = help: within `Path3`, the trait `std::marker::Sized` is not implemented for `PathHelper3 + 'static` + = help: within `Path3`, the trait `std::marker::Sized` is not implemented for `(dyn PathHelper3 + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: required because it appears within the type `Path3` = note: no field of an enum variant may have a dynamically sized type -error[E0277]: the size for value values of type `PathHelper4 + 'static` cannot be known at compilation time +error[E0277]: the size for value values of type `(dyn PathHelper4 + 'static)` cannot be known at compilation time --> $DIR/unsized-enum2.rs:59:18 | LL | VL{u: isize, x: Path4}, | ^^^^^^^^ doesn't have a size known at compile-time | - = help: within `Path4`, the trait `std::marker::Sized` is not implemented for `PathHelper4 + 'static` + = help: within `Path4`, the trait `std::marker::Sized` is not implemented for `(dyn PathHelper4 + 'static)` = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized> = note: required because it appears within the type `Path4` = note: no field of an enum variant may have a dynamically sized type |
