Add message to rustc_on_unimplemented
attributes in core
This commit is contained in:
parent
b3a1d56ebe
commit
776544f011
112 changed files with 394 additions and 318 deletions
|
@ -1693,7 +1693,10 @@ impl<T: Hash> Hash for Vec<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="vector indices are of type `usize` or ranges of `usize`",
|
||||||
|
label="vector indices are of type `usize` or ranges of `usize`",
|
||||||
|
)]
|
||||||
impl<T, I> Index<I> for Vec<T>
|
impl<T, I> Index<I> for Vec<T>
|
||||||
where
|
where
|
||||||
I: ::core::slice::SliceIndex<[T]>,
|
I: ::core::slice::SliceIndex<[T]>,
|
||||||
|
@ -1707,7 +1710,10 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="vector indices are of type `usize` or ranges of `usize`",
|
||||||
|
label="vector indices are of type `usize` or ranges of `usize`",
|
||||||
|
)]
|
||||||
impl<T, I> IndexMut<I> for Vec<T>
|
impl<T, I> IndexMut<I> for Vec<T>
|
||||||
where
|
where
|
||||||
I: ::core::slice::SliceIndex<[T]>,
|
I: ::core::slice::SliceIndex<[T]>,
|
||||||
|
|
|
@ -108,7 +108,10 @@ use self::Ordering::*;
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[doc(alias = "==")]
|
#[doc(alias = "==")]
|
||||||
#[doc(alias = "!=")]
|
#[doc(alias = "!=")]
|
||||||
#[rustc_on_unimplemented = "can't compare `{Self}` with `{Rhs}`"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="can't compare `{Self}` with `{Rhs}`",
|
||||||
|
label="no implementation for `{Self} == {Rhs}`",
|
||||||
|
)]
|
||||||
pub trait PartialEq<Rhs: ?Sized = Self> {
|
pub trait PartialEq<Rhs: ?Sized = Self> {
|
||||||
/// This method tests for `self` and `other` values to be equal, and is used
|
/// This method tests for `self` and `other` values to be equal, and is used
|
||||||
/// by `==`.
|
/// by `==`.
|
||||||
|
@ -611,7 +614,10 @@ impl PartialOrd for Ordering {
|
||||||
#[doc(alias = "<")]
|
#[doc(alias = "<")]
|
||||||
#[doc(alias = "<=")]
|
#[doc(alias = "<=")]
|
||||||
#[doc(alias = ">=")]
|
#[doc(alias = ">=")]
|
||||||
#[rustc_on_unimplemented = "can't compare `{Self}` with `{Rhs}`"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="can't compare `{Self}` with `{Rhs}`",
|
||||||
|
label="no implementation for `{Self} < {Rhs}` and `{Self} > {Rhs}`",
|
||||||
|
)]
|
||||||
pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> {
|
pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> {
|
||||||
/// This method returns an ordering between `self` and `other` values if one exists.
|
/// This method returns an ordering between `self` and `other` values if one exists.
|
||||||
///
|
///
|
||||||
|
|
|
@ -104,8 +104,11 @@ use super::LoopState;
|
||||||
/// assert_eq!(c.0, vec![0, 1, 2, 3, 4]);
|
/// assert_eq!(c.0, vec![0, 1, 2, 3, 4]);
|
||||||
/// ```
|
/// ```
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[rustc_on_unimplemented="a collection of type `{Self}` cannot be \
|
#[rustc_on_unimplemented(
|
||||||
built from an iterator over elements of type `{A}`"]
|
message="a collection of type `{Self}` cannot be built from an iterator \
|
||||||
|
over elements of type `{A}`",
|
||||||
|
label="a collection of type `{Self}` cannot be built from `std::iter::Iterator<Item={A}>`",
|
||||||
|
)]
|
||||||
pub trait FromIterator<A>: Sized {
|
pub trait FromIterator<A>: Sized {
|
||||||
/// Creates a value from an iterator.
|
/// Creates a value from an iterator.
|
||||||
///
|
///
|
||||||
|
|
|
@ -39,7 +39,10 @@ use hash::Hasher;
|
||||||
/// [arc]: ../../std/sync/struct.Arc.html
|
/// [arc]: ../../std/sync/struct.Arc.html
|
||||||
/// [ub]: ../../reference/behavior-considered-undefined.html
|
/// [ub]: ../../reference/behavior-considered-undefined.html
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[rustc_on_unimplemented = "`{Self}` cannot be sent between threads safely"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="`{Self}` cannot be sent between threads safely",
|
||||||
|
label="`{Self}` cannot be sent between threads safely"
|
||||||
|
)]
|
||||||
pub unsafe auto trait Send {
|
pub unsafe auto trait Send {
|
||||||
// empty.
|
// empty.
|
||||||
}
|
}
|
||||||
|
@ -88,7 +91,10 @@ impl<T: ?Sized> !Send for *mut T { }
|
||||||
/// [trait object]: ../../book/first-edition/trait-objects.html
|
/// [trait object]: ../../book/first-edition/trait-objects.html
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[lang = "sized"]
|
#[lang = "sized"]
|
||||||
#[rustc_on_unimplemented = "`{Self}` does not have a constant size known at compile-time"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="`{Self}` does not have a constant size known at compile-time",
|
||||||
|
label="`{Self}` does not have a constant size known at compile-time"
|
||||||
|
)]
|
||||||
#[fundamental] // for Default, for example, which requires that `[T]: !Default` be evaluatable
|
#[fundamental] // for Default, for example, which requires that `[T]: !Default` be evaluatable
|
||||||
pub trait Sized {
|
pub trait Sized {
|
||||||
// Empty.
|
// Empty.
|
||||||
|
|
|
@ -60,7 +60,10 @@
|
||||||
/// assert_eq!(nucleotide_count[Nucleotide::T], 12);
|
/// assert_eq!(nucleotide_count[Nucleotide::T], 12);
|
||||||
/// ```
|
/// ```
|
||||||
#[lang = "index"]
|
#[lang = "index"]
|
||||||
#[rustc_on_unimplemented = "the type `{Self}` cannot be indexed by `{Idx}`"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="the type `{Self}` cannot be indexed by `{Idx}`",
|
||||||
|
label="`{Self}` cannot be indexed by `{Idx}`",
|
||||||
|
)]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[doc(alias = "]")]
|
#[doc(alias = "]")]
|
||||||
#[doc(alias = "[")]
|
#[doc(alias = "[")]
|
||||||
|
@ -147,7 +150,10 @@ pub trait Index<Idx: ?Sized> {
|
||||||
/// balance[Side::Left] = Weight::Kilogram(3.0);
|
/// balance[Side::Left] = Weight::Kilogram(3.0);
|
||||||
/// ```
|
/// ```
|
||||||
#[lang = "index_mut"]
|
#[lang = "index_mut"]
|
||||||
#[rustc_on_unimplemented = "the type `{Self}` cannot be mutably indexed by `{Idx}`"]
|
#[rustc_on_unimplemented(
|
||||||
|
message="the type `{Self}` cannot be mutably indexed by `{Idx}`",
|
||||||
|
label="`{Self}` cannot be mutably indexed by `{Idx}`",
|
||||||
|
)]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
#[doc(alias = "[")]
|
#[doc(alias = "[")]
|
||||||
#[doc(alias = "]")]
|
#[doc(alias = "]")]
|
||||||
|
|
|
@ -110,8 +110,10 @@ pub use core::panic::{PanicInfo, Location};
|
||||||
///
|
///
|
||||||
/// [`AssertUnwindSafe`]: ./struct.AssertUnwindSafe.html
|
/// [`AssertUnwindSafe`]: ./struct.AssertUnwindSafe.html
|
||||||
#[stable(feature = "catch_unwind", since = "1.9.0")]
|
#[stable(feature = "catch_unwind", since = "1.9.0")]
|
||||||
#[rustc_on_unimplemented = "the type {Self} may not be safely transferred \
|
#[rustc_on_unimplemented(
|
||||||
across an unwind boundary"]
|
message="the type `{Self}` may not be safely transferred across an unwind boundary",
|
||||||
|
label="`{Self}` may not be safely transferred across an unwind boundary",
|
||||||
|
)]
|
||||||
pub auto trait UnwindSafe {}
|
pub auto trait UnwindSafe {}
|
||||||
|
|
||||||
/// A marker trait representing types where a shared reference is considered
|
/// A marker trait representing types where a shared reference is considered
|
||||||
|
@ -126,9 +128,12 @@ pub auto trait UnwindSafe {}
|
||||||
/// [`UnsafeCell`]: ../cell/struct.UnsafeCell.html
|
/// [`UnsafeCell`]: ../cell/struct.UnsafeCell.html
|
||||||
/// [`UnwindSafe`]: ./trait.UnwindSafe.html
|
/// [`UnwindSafe`]: ./trait.UnwindSafe.html
|
||||||
#[stable(feature = "catch_unwind", since = "1.9.0")]
|
#[stable(feature = "catch_unwind", since = "1.9.0")]
|
||||||
#[rustc_on_unimplemented = "the type {Self} may contain interior mutability \
|
#[rustc_on_unimplemented(
|
||||||
and a reference may not be safely transferrable \
|
message="the type `{Self}` may contain interior mutability and a reference may not be safely \
|
||||||
across a catch_unwind boundary"]
|
transferrable across a catch_unwind boundary",
|
||||||
|
label="`{Self}` may contain interior mutability and a reference may not be safely \
|
||||||
|
transferrable across a catch_unwind boundary",
|
||||||
|
)]
|
||||||
pub auto trait RefUnwindSafe {}
|
pub auto trait RefUnwindSafe {}
|
||||||
|
|
||||||
/// A simple wrapper around a type to assert that it is unwind safe.
|
/// A simple wrapper around a type to assert that it is unwind safe.
|
||||||
|
|
|
@ -1204,14 +1204,6 @@ impl<'a> Parser<'a> {
|
||||||
fn span_fatal_err<S: Into<MultiSpan>>(&self, sp: S, err: Error) -> DiagnosticBuilder<'a> {
|
fn span_fatal_err<S: Into<MultiSpan>>(&self, sp: S, err: Error) -> DiagnosticBuilder<'a> {
|
||||||
err.span_err(sp, self.diagnostic())
|
err.span_err(sp, self.diagnostic())
|
||||||
}
|
}
|
||||||
fn span_fatal_help<S: Into<MultiSpan>>(&self,
|
|
||||||
sp: S,
|
|
||||||
m: &str,
|
|
||||||
help: &str) -> DiagnosticBuilder<'a> {
|
|
||||||
let mut err = self.sess.span_diagnostic.struct_span_fatal(sp, m);
|
|
||||||
err.help(help);
|
|
||||||
err
|
|
||||||
}
|
|
||||||
fn bug(&self, m: &str) -> ! {
|
fn bug(&self, m: &str) -> ! {
|
||||||
self.sess.span_diagnostic.span_bug(self.span, m)
|
self.sess.span_diagnostic.span_bug(self.span, m)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ trait Get {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn foo<T:Get>(t: T) {
|
fn foo<T:Get>(t: T) {
|
||||||
let x = t.get(); //~ ERROR `<T as Get>::Value: std::marker::Sized` is not
|
let x = t.get(); //~ ERROR `<T as Get>::Value` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
fn foo<T:'static>() {
|
fn foo<T:'static>() {
|
||||||
1.bar::<T>(); //~ ERROR `T: std::marker::Send` is not satisfied
|
1.bar::<T>(); //~ ERROR `T` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
trait bar {
|
trait bar {
|
||||||
|
|
|
@ -13,6 +13,6 @@ trait Trait {}
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let x: Vec<Trait + Sized> = Vec::new();
|
let x: Vec<Trait + Sized> = Vec::new();
|
||||||
//~^ ERROR only auto traits can be used as additional traits in a trait object
|
//~^ ERROR only auto traits can be used as additional traits in a trait object
|
||||||
//~| ERROR the trait bound `Trait: std::marker::Sized` is not satisfied
|
//~| ERROR `Trait` does not have a constant size known at compile-time
|
||||||
//~| ERROR the trait bound `Trait: std::marker::Sized` is not satisfied
|
//~| ERROR `Trait` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
trait Foo : Send+Sync { }
|
trait Foo : Send+Sync { }
|
||||||
|
|
||||||
impl <T: Sync+'static> Foo for (T,) { }
|
impl <T: Sync+'static> Foo for (T,) { }
|
||||||
//~^ ERROR the trait bound `T: std::marker::Send` is not satisfied in `(T,)` [E0277]
|
//~^ ERROR `T` cannot be sent between threads safely [E0277]
|
||||||
|
|
||||||
impl <T: Send> Foo for (T,T) { }
|
impl <T: Send> Foo for (T,T) { }
|
||||||
//~^ ERROR `T` cannot be shared between threads safely [E0277]
|
//~^ ERROR `T` cannot be shared between threads safely [E0277]
|
||||||
|
|
|
@ -22,6 +22,6 @@ struct X<T>(T);
|
||||||
impl <T:Sync> RequiresShare for X<T> { }
|
impl <T:Sync> RequiresShare for X<T> { }
|
||||||
|
|
||||||
impl <T:Sync+'static> RequiresRequiresShareAndSend for X<T> { }
|
impl <T:Sync+'static> RequiresRequiresShareAndSend for X<T> { }
|
||||||
//~^ ERROR `T: std::marker::Send` is not satisfied
|
//~^ ERROR `T` cannot be sent between threads safely [E0277]
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -14,6 +14,6 @@
|
||||||
trait Foo : Send { }
|
trait Foo : Send { }
|
||||||
|
|
||||||
impl Foo for std::rc::Rc<i8> { }
|
impl Foo for std::rc::Rc<i8> { }
|
||||||
//~^ ERROR `std::rc::Rc<i8>: std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<i8>` cannot be sent between threads safely
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
trait Foo : Send { }
|
trait Foo : Send { }
|
||||||
|
|
||||||
impl <T: Sync+'static> Foo for T { } //~ ERROR `T: std::marker::Send` is not satisfied
|
impl <T: Sync+'static> Foo for T { }
|
||||||
|
//~^ ERROR `T` cannot be sent between threads safely
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -13,7 +13,7 @@ struct X<F> where F: FnOnce() + 'static + Send {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn foo<F>(blk: F) -> X<F> where F: FnOnce() + 'static {
|
fn foo<F>(blk: F) -> X<F> where F: FnOnce() + 'static {
|
||||||
//~^ ERROR `F: std::marker::Send` is not satisfied
|
//~^ ERROR `F` cannot be sent between threads safely
|
||||||
return X { field: blk };
|
return X { field: blk };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,5 +43,5 @@ pub fn main() {
|
||||||
let f5: &mut Fat<ToBar> = &mut Fat { f1: 5, f2: "some str", ptr: Bar1 {f :42} };
|
let f5: &mut Fat<ToBar> = &mut Fat { f1: 5, f2: "some str", ptr: Bar1 {f :42} };
|
||||||
let z: Box<ToBar> = Box::new(Bar1 {f: 36});
|
let z: Box<ToBar> = Box::new(Bar1 {f: 36});
|
||||||
f5.ptr = *z;
|
f5.ptr = *z;
|
||||||
//~^ ERROR `ToBar: std::marker::Sized` is not satisfied
|
//~^ ERROR `ToBar` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,5 +45,5 @@ pub fn main() {
|
||||||
//~| expected type `ToBar`
|
//~| expected type `ToBar`
|
||||||
//~| found type `Bar1`
|
//~| found type `Bar1`
|
||||||
//~| expected trait ToBar, found struct `Bar1`
|
//~| expected trait ToBar, found struct `Bar1`
|
||||||
//~| ERROR `ToBar: std::marker::Sized` is not satisfied
|
//~| ERROR `ToBar` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,5 +47,5 @@ pub fn main() {
|
||||||
//~| expected type `ToBar`
|
//~| expected type `ToBar`
|
||||||
//~| found type `Bar1`
|
//~| found type `Bar1`
|
||||||
//~| expected trait ToBar, found struct `Bar1`
|
//~| expected trait ToBar, found struct `Bar1`
|
||||||
//~| ERROR `ToBar: std::marker::Sized` is not satisfied
|
//~| ERROR `ToBar` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,5 +19,5 @@ pub fn main() {
|
||||||
let f: ([isize; 3],) = ([5, 6, 7],);
|
let f: ([isize; 3],) = ([5, 6, 7],);
|
||||||
let g: &([isize],) = &f;
|
let g: &([isize],) = &f;
|
||||||
let h: &(([isize],),) = &(*g,);
|
let h: &(([isize],),) = &(*g,);
|
||||||
//~^ ERROR `[isize]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[isize]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,5 +21,5 @@ pub fn main() {
|
||||||
let f: Fat<[isize; 3]> = Fat { ptr: [5, 6, 7] };
|
let f: Fat<[isize; 3]> = Fat { ptr: [5, 6, 7] };
|
||||||
let g: &Fat<[isize]> = &f;
|
let g: &Fat<[isize]> = &f;
|
||||||
let h: &Fat<Fat<[isize]>> = &Fat { ptr: *g };
|
let h: &Fat<Fat<[isize]>> = &Fat { ptr: *g };
|
||||||
//~^ ERROR `[isize]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[isize]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,22 +16,22 @@ impl Foo for [u8] {}
|
||||||
|
|
||||||
fn test1<T: ?Sized + Foo>(t: &T) {
|
fn test1<T: ?Sized + Foo>(t: &T) {
|
||||||
let u: &Foo = t;
|
let u: &Foo = t;
|
||||||
//~^ ERROR `T: std::marker::Sized` is not satisfied
|
//~^ ERROR `T` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test2<T: ?Sized + Foo>(t: &T) {
|
fn test2<T: ?Sized + Foo>(t: &T) {
|
||||||
let v: &Foo = t as &Foo;
|
let v: &Foo = t as &Foo;
|
||||||
//~^ ERROR `T: std::marker::Sized` is not satisfied
|
//~^ ERROR `T` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test3() {
|
fn test3() {
|
||||||
let _: &[&Foo] = &["hi"];
|
let _: &[&Foo] = &["hi"];
|
||||||
//~^ ERROR `str: std::marker::Sized` is not satisfied
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test4(x: &[u8]) {
|
fn test4(x: &[u8]) {
|
||||||
let _: &Foo = x as &Foo;
|
let _: &Foo = x as &Foo;
|
||||||
//~^ ERROR `[u8]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[u8]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
trait Foo<T> : Sized { fn take(self, x: &T) { } } // Note: T is sized
|
trait Foo<T> : Sized { fn take(self, x: &T) { } } // Note: T is sized
|
||||||
|
|
||||||
impl Foo<[isize]> for usize { }
|
impl Foo<[isize]> for usize { }
|
||||||
//~^ ERROR `[isize]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[isize]` does not have a constant size known at compile-time
|
||||||
|
|
||||||
impl Foo<isize> for [usize] { }
|
impl Foo<isize> for [usize] { }
|
||||||
//~^ ERROR `[usize]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[usize]` does not have a constant size known at compile-time
|
||||||
|
|
||||||
pub fn main() { }
|
pub fn main() { }
|
||||||
|
|
|
@ -24,5 +24,5 @@ fn main() {
|
||||||
//~^ ERROR `A` cannot be shared between threads safely [E0277]
|
//~^ ERROR `A` cannot be shared between threads safely [E0277]
|
||||||
|
|
||||||
assert_send::<A>();
|
assert_send::<A>();
|
||||||
//~^ ERROR the trait bound `A: std::marker::Send` is not satisfied
|
//~^ ERROR `A` cannot be sent between threads safely [E0277]
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,14 +30,14 @@ fn assert_sized<T>() { }
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
assert_sized::<A>();
|
assert_sized::<A>();
|
||||||
//~^ ERROR the trait bound `A: std::marker::Sized` is not satisfied
|
//~^ ERROR `A` does not have a constant size known at compile-time
|
||||||
|
|
||||||
assert_sized::<Foo>();
|
assert_sized::<Foo>();
|
||||||
//~^ ERROR the trait bound `A: std::marker::Sized` is not satisfied
|
//~^ ERROR `A` does not have a constant size known at compile-time
|
||||||
|
|
||||||
assert_sized::<Bar<A>>();
|
assert_sized::<Bar<A>>();
|
||||||
//~^ ERROR the trait bound `A: std::marker::Sized` is not satisfied
|
//~^ ERROR `A` does not have a constant size known at compile-time
|
||||||
|
|
||||||
assert_sized::<Bar<Bar<A>>>();
|
assert_sized::<Bar<Bar<A>>>();
|
||||||
//~^ ERROR the trait bound `A: std::marker::Sized` is not satisfied
|
//~^ ERROR `A` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,5 +10,5 @@
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let _x = "test" as &::std::any::Any;
|
let _x = "test" as &::std::any::Any;
|
||||||
//~^ ERROR `str: std::marker::Sized` is not satisfied
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ fn dft_iter<'a, T>(arg1: Chunks<'a,T>, arg2: ChunksMut<'a,T>)
|
||||||
{
|
{
|
||||||
for
|
for
|
||||||
&mut something
|
&mut something
|
||||||
//~^ ERROR `[T]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[T]` does not have a constant size known at compile-time
|
||||||
in arg2
|
in arg2
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,5 +13,5 @@
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
(|| Box::new(*(&[0][..])))();
|
(|| Box::new(*(&[0][..])))();
|
||||||
//~^ ERROR `[{integer}]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[{integer}]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ pub trait AbstractRenderer {}
|
||||||
|
|
||||||
fn _create_render(_: &()) ->
|
fn _create_render(_: &()) ->
|
||||||
AbstractRenderer
|
AbstractRenderer
|
||||||
//~^ ERROR: `AbstractRenderer + 'static: std::marker::Sized` is not satisfied
|
//~^ ERROR: `AbstractRenderer + 'static` does not have a constant size known at compile-time
|
||||||
{
|
{
|
||||||
match 0 {
|
match 0 {
|
||||||
_ => unimplemented!()
|
_ => unimplemented!()
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
type FuncType<'f> = Fn(&isize) -> isize + 'f;
|
type FuncType<'f> = Fn(&isize) -> isize + 'f;
|
||||||
|
|
||||||
fn ho_func(f: Option<FuncType>) {
|
fn ho_func(f: Option<FuncType>) {
|
||||||
//~^ ERROR: `for<'r> std::ops::Fn(&'r isize) -> isize: std::marker::Sized` is not satisfied
|
//~^ ERROR: `for<'r> std::ops::Fn(&'r isize) -> isize` does not have a constant size known at
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -15,7 +15,7 @@ trait From<Src> {
|
||||||
}
|
}
|
||||||
|
|
||||||
trait To {
|
trait To {
|
||||||
fn to<Dst>( //~ ERROR `Self: std::marker::Sized` is not satisfied
|
fn to<Dst>( //~ ERROR `Self` does not have a constant size known at compile-time
|
||||||
self
|
self
|
||||||
) -> <Dst as From<Self>>::Result where Dst: From<Self> {
|
) -> <Dst as From<Self>>::Result where Dst: From<Self> {
|
||||||
From::from(self)
|
From::from(self)
|
||||||
|
|
|
@ -14,5 +14,5 @@ struct The;
|
||||||
|
|
||||||
impl The {
|
impl The {
|
||||||
fn iceman(c: Vec<[i32]>) {}
|
fn iceman(c: Vec<[i32]>) {}
|
||||||
//~^ ERROR the trait bound `[i32]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[i32]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
fn changer<'a>(mut things: Box<Iterator<Item=&'a mut u8>>) {
|
fn changer<'a>(mut things: Box<Iterator<Item=&'a mut u8>>) {
|
||||||
for item in *things { *item = 0 }
|
for item in *things { *item = 0 }
|
||||||
//~^ ERROR the trait bound `std::iter::Iterator<Item=&mut u8>: std::marker::Sized` is not satisfied
|
//~^ ERROR `std::iter::Iterator<Item=&mut u8>` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -17,5 +17,5 @@ fn foo<T: Send>() {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
foo::<HashMap<Rc<()>, Rc<()>>>();
|
foo::<HashMap<Rc<()>, Rc<()>>>();
|
||||||
//~^ ERROR: `std::rc::Rc<()>: std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<()>` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
struct Table {
|
struct Table {
|
||||||
rows: [[String]],
|
rows: [[String]],
|
||||||
//~^ ERROR the trait bound `[std::string::String]: std::marker::Sized` is not satisfied [E0277]
|
//~^ ERROR `[std::string::String]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn f(table: &Table) -> &[String] {
|
fn f(table: &Table) -> &[String] {
|
||||||
|
|
|
@ -14,7 +14,7 @@ pub struct Struct;
|
||||||
|
|
||||||
impl Struct {
|
impl Struct {
|
||||||
pub fn function(funs: Vec<Fn() -> ()>) {}
|
pub fn function(funs: Vec<Fn() -> ()>) {}
|
||||||
//~^ ERROR the trait bound `std::ops::Fn() + 'static: std::marker::Sized` is not satisfied
|
//~^ ERROR `std::ops::Fn() + 'static` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
fn main() {
|
fn main() {
|
||||||
static foo: Fn() -> u32 = || -> u32 {
|
static foo: Fn() -> u32 = || -> u32 {
|
||||||
//~^ ERROR: mismatched types
|
//~^ ERROR: mismatched types
|
||||||
//~| ERROR: `std::ops::Fn() -> u32 + 'static: std::marker::Sized` is not satisfied
|
//~| ERROR: `std::ops::Fn() -> u32 + 'static` does not have a constant size known at compile-time
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct Bad<T: ?Sized> {
|
pub struct Bad<T: ?Sized> {
|
||||||
data: T, //~ ERROR `T: std::marker::Sized` is not satisfied
|
data: T, //~ ERROR `T` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
trait Foo {
|
trait Foo {
|
||||||
const BAR: i32;
|
const BAR: i32;
|
||||||
fn foo(self) -> &'static i32 {
|
fn foo(self) -> &'static i32 {
|
||||||
//~^ ERROR the trait bound `Self: std::marker::Sized` is not satisfied
|
//~^ ERROR `Self` does not have a constant size known at compile-time
|
||||||
&<Self>::BAR
|
&<Self>::BAR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
enum E {
|
enum E {
|
||||||
V([Box<E>]),
|
V([Box<E>]),
|
||||||
//~^ ERROR the trait bound `[std::boxed::Box<E>]: std::marker::Sized` is not satisfied [E0277]
|
//~^ ERROR `[std::boxed::Box<E>]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -9,6 +9,6 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
fn _test(ref _p: str) {}
|
fn _test(ref _p: str) {}
|
||||||
//~^ ERROR the trait bound `str: std::marker::Sized` is not satisfied [E0277]
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -9,8 +9,6 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
pub fn example(ref s: str) {}
|
pub fn example(ref s: str) {}
|
||||||
//~^ ERROR the trait bound `str: std::marker::Sized` is not satisfied
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
//~| `str` does not have a constant size known at compile-time
|
|
||||||
//~| the trait `std::marker::Sized` is not implemented for `str`
|
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -12,10 +12,10 @@ use std::ops::Deref;
|
||||||
|
|
||||||
pub trait Foo {
|
pub trait Foo {
|
||||||
fn baz(_: Self::Target) where Self: Deref {}
|
fn baz(_: Self::Target) where Self: Deref {}
|
||||||
//~^ ERROR `<Self as std::ops::Deref>::Target: std::marker::Sized` is not satisfied
|
//~^ ERROR `<Self as std::ops::Deref>::Target` does not have a constant size known at
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn f(_: ToString) {}
|
pub fn f(_: ToString) {}
|
||||||
//~^ ERROR the trait bound `std::string::ToString + 'static: std::marker::Sized` is not satisfied
|
//~^ ERROR `std::string::ToString + 'static` does not have a constant size known at compile-time
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -15,8 +15,8 @@ struct Struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new_struct(r: A+'static)
|
fn new_struct(r: A+'static)
|
||||||
-> Struct { //~^ ERROR `A + 'static: std::marker::Sized` is not satisfied
|
-> Struct { //~^ ERROR `A + 'static` does not have a constant size known at compile-time
|
||||||
//~^ ERROR `A + 'static: std::marker::Sized` is not satisfied
|
//~^ ERROR `A + 'static` does not have a constant size known at compile-time
|
||||||
Struct { r: r }
|
Struct { r: r }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,5 +34,5 @@ struct A {
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let a = A {v: box B{v: None} as Box<Foo+Send>};
|
let a = A {v: box B{v: None} as Box<Foo+Send>};
|
||||||
//~^ ERROR `std::rc::Rc<std::cell::RefCell<A>>: std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<std::cell::RefCell<A>>` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,15 +26,15 @@ impl<T: Send + Copy + 'static> Gettable<T> for S<T> {}
|
||||||
fn f<T>(val: T) {
|
fn f<T>(val: T) {
|
||||||
let t: S<T> = S(marker::PhantomData);
|
let t: S<T> = S(marker::PhantomData);
|
||||||
let a = &t as &Gettable<T>;
|
let a = &t as &Gettable<T>;
|
||||||
//~^ ERROR : std::marker::Send` is not satisfied
|
//~^ ERROR `T` cannot be sent between threads safely
|
||||||
//~^^ ERROR : std::marker::Copy` is not satisfied
|
//~| ERROR : std::marker::Copy` is not satisfied
|
||||||
}
|
}
|
||||||
|
|
||||||
fn g<T>(val: T) {
|
fn g<T>(val: T) {
|
||||||
let t: S<T> = S(marker::PhantomData);
|
let t: S<T> = S(marker::PhantomData);
|
||||||
let a: &Gettable<T> = &t;
|
let a: &Gettable<T> = &t;
|
||||||
//~^ ERROR : std::marker::Send` is not satisfied
|
//~^ ERROR `T` cannot be sent between threads safely
|
||||||
//~^^ ERROR : std::marker::Copy` is not satisfied
|
//~| ERROR : std::marker::Copy` is not satisfied
|
||||||
}
|
}
|
||||||
|
|
||||||
fn foo<'a>() {
|
fn foo<'a>() {
|
||||||
|
|
|
@ -18,5 +18,5 @@ fn bar<F:FnOnce() + Send>(_: F) { }
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = Rc::new(3);
|
let x = Rc::new(3);
|
||||||
bar(move|| foo(x));
|
bar(move|| foo(x));
|
||||||
//~^ ERROR : std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<usize>` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,8 @@ fn object_ref_with_static_bound_not_ok() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn box_object_with_no_bound_not_ok<'a>() {
|
fn box_object_with_no_bound_not_ok<'a>() {
|
||||||
assert_send::<Box<Dummy>>(); //~ ERROR : std::marker::Send` is not satisfied
|
assert_send::<Box<Dummy>>();
|
||||||
|
//~^ ERROR `Dummy` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn object_with_send_bound_ok() {
|
fn object_with_send_bound_ok() {
|
||||||
|
|
|
@ -37,7 +37,7 @@ fn test61() {
|
||||||
// them not ok
|
// them not ok
|
||||||
fn test_71<'a>() {
|
fn test_71<'a>() {
|
||||||
assert_send::<Box<Dummy+'a>>();
|
assert_send::<Box<Dummy+'a>>();
|
||||||
//~^ ERROR : std::marker::Send` is not satisfied
|
//~^ ERROR `Dummy + 'a` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -19,7 +19,8 @@ fn test50() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test53() {
|
fn test53() {
|
||||||
assert_send::<Box<Dummy>>(); //~ ERROR : std::marker::Send` is not satisfied
|
assert_send::<Box<Dummy>>();
|
||||||
|
//~^ ERROR `Dummy` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
// ...unless they are properly bounded
|
// ...unless they are properly bounded
|
||||||
|
|
|
@ -19,7 +19,8 @@ fn test32() { assert_send::<Vec<isize> >(); }
|
||||||
|
|
||||||
// but not if they own a bad thing
|
// but not if they own a bad thing
|
||||||
fn test40() {
|
fn test40() {
|
||||||
assert_send::<Box<*mut u8>>(); //~ ERROR : std::marker::Send` is not satisfied
|
assert_send::<Box<*mut u8>>();
|
||||||
|
//~^ ERROR `*mut u8` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -14,7 +14,7 @@ fn assert_send<T:Send>() { }
|
||||||
|
|
||||||
fn test71<'a>() {
|
fn test71<'a>() {
|
||||||
assert_send::<*mut &'a isize>();
|
assert_send::<*mut &'a isize>();
|
||||||
//~^ ERROR `*mut &'a isize: std::marker::Send` is not satisfied
|
//~^ ERROR `*mut &'a isize` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
|
@ -33,7 +33,7 @@ fn main() {
|
||||||
let x = foo(Port(Rc::new(())));
|
let x = foo(Port(Rc::new(())));
|
||||||
|
|
||||||
thread::spawn(move|| {
|
thread::spawn(move|| {
|
||||||
//~^ ERROR `std::rc::Rc<()>: std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<()>` cannot be sent between threads safely
|
||||||
let y = x;
|
let y = x;
|
||||||
println!("{:?}", y);
|
println!("{:?}", y);
|
||||||
});
|
});
|
||||||
|
|
|
@ -24,5 +24,5 @@ fn bar<T: Send>(_: T) {}
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = Foo::A(NoSend);
|
let x = Foo::A(NoSend);
|
||||||
bar(x);
|
bar(x);
|
||||||
//~^ ERROR `NoSend: std::marker::Send` is not satisfied
|
//~^ ERROR `NoSend` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,5 +15,5 @@ fn bar<T: Send>(_: T) {}
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = Rc::new(5);
|
let x = Rc::new(5);
|
||||||
bar(x);
|
bar(x);
|
||||||
//~^ ERROR `std::rc::Rc<{integer}>: std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<{integer}>` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,5 +23,5 @@ fn bar<T: Send>(_: T) {}
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = Foo { a: 5 };
|
let x = Foo { a: 5 };
|
||||||
bar(x);
|
bar(x);
|
||||||
//~^ ERROR `Foo: std::marker::Send` is not satisfied
|
//~^ ERROR `Foo` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,6 @@ fn assert<T: UnwindSafe + ?Sized>() {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
assert::<Rc<RefCell<i32>>>();
|
assert::<Rc<RefCell<i32>>>();
|
||||||
//~^ ERROR `std::cell::UnsafeCell<i32>: std::panic::RefUnwindSafe` is not satisfied
|
//~^ ERROR the type `std::cell::UnsafeCell<i32>` may contain interior mutability and a
|
||||||
//~^^ ERROR `std::cell::UnsafeCell<usize>: std::panic::RefUnwindSafe` is not satisfied
|
//~| ERROR the type `std::cell::UnsafeCell<usize>` may contain interior mutability and a
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,6 @@ fn assert<T: UnwindSafe + ?Sized>() {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
assert::<Arc<RefCell<i32>>>();
|
assert::<Arc<RefCell<i32>>>();
|
||||||
//~^ ERROR `std::cell::UnsafeCell<i32>: std::panic::RefUnwindSafe` is not satisfied
|
//~^ ERROR the type `std::cell::UnsafeCell<i32>` may contain interior mutability and a
|
||||||
//~^^ ERROR `std::cell::UnsafeCell<usize>: std::panic::RefUnwindSafe` is not satisfied
|
//~| ERROR the type `std::cell::UnsafeCell<usize>` may contain interior mutability and a
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,6 @@ fn assert<T: UnwindSafe + ?Sized>() {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
assert::<&RefCell<i32>>();
|
assert::<&RefCell<i32>>();
|
||||||
//~^ ERROR `std::cell::UnsafeCell<i32>: std::panic::RefUnwindSafe` is not satisfied
|
//~^ ERROR the type `std::cell::UnsafeCell<i32>` may contain interior mutability and a
|
||||||
//~^^ ERROR `std::cell::UnsafeCell<usize>: std::panic::RefUnwindSafe` is not satisfied
|
//~| ERROR the type `std::cell::UnsafeCell<usize>` may contain interior mutability and a
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,6 @@ fn assert<T: UnwindSafe + ?Sized>() {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
assert::<*mut RefCell<i32>>();
|
assert::<*mut RefCell<i32>>();
|
||||||
//~^ ERROR `std::cell::UnsafeCell<i32>: std::panic::RefUnwindSafe` is not satisfied
|
//~^ ERROR the type `std::cell::UnsafeCell<i32>` may contain interior mutability and a
|
||||||
//~^^ ERROR `std::cell::UnsafeCell<usize>: std::panic::RefUnwindSafe` is not satisfied
|
//~| ERROR the type `std::cell::UnsafeCell<usize>` may contain interior mutability and a
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,5 +16,6 @@ use std::panic::UnwindSafe;
|
||||||
fn assert<T: UnwindSafe + ?Sized>() {}
|
fn assert<T: UnwindSafe + ?Sized>() {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
assert::<&mut i32>(); //~ ERROR: UnwindSafe` is not satisfied
|
assert::<&mut i32>();
|
||||||
|
//~^ ERROR the type `&mut i32` may not be safely transferred across an unwind boundary
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,5 +22,5 @@ pub fn main() {
|
||||||
// Unsized type.
|
// Unsized type.
|
||||||
let arr: &[_] = &[1, 2, 3];
|
let arr: &[_] = &[1, 2, 3];
|
||||||
let range = *arr..;
|
let range = *arr..;
|
||||||
//~^ ERROR `[{integer}]: std::marker::Sized` is not satisfied
|
//~^ ERROR `[{integer}]` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,23 +13,23 @@ use std::ops::*;
|
||||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
|
||||||
struct AllTheRanges {
|
struct AllTheRanges {
|
||||||
a: Range<usize>,
|
a: Range<usize>,
|
||||||
//~^ ERROR PartialOrd
|
//~^ ERROR can't compare
|
||||||
//~^^ ERROR Ord
|
//~| ERROR Ord
|
||||||
b: RangeTo<usize>,
|
b: RangeTo<usize>,
|
||||||
//~^ ERROR PartialOrd
|
//~^ ERROR can't compare
|
||||||
//~^^ ERROR Ord
|
//~| ERROR Ord
|
||||||
c: RangeFrom<usize>,
|
c: RangeFrom<usize>,
|
||||||
//~^ ERROR PartialOrd
|
//~^ ERROR can't compare
|
||||||
//~^^ ERROR Ord
|
//~| ERROR Ord
|
||||||
d: RangeFull,
|
d: RangeFull,
|
||||||
//~^ ERROR PartialOrd
|
//~^ ERROR can't compare
|
||||||
//~^^ ERROR Ord
|
//~| ERROR Ord
|
||||||
e: RangeInclusive<usize>,
|
e: RangeInclusive<usize>,
|
||||||
//~^ ERROR PartialOrd
|
//~^ ERROR can't compare
|
||||||
//~^^ ERROR Ord
|
//~| ERROR Ord
|
||||||
f: RangeToInclusive<usize>,
|
f: RangeToInclusive<usize>,
|
||||||
//~^ ERROR PartialOrd
|
//~^ ERROR can't compare
|
||||||
//~^^ ERROR Ord
|
//~| ERROR Ord
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -10,5 +10,5 @@
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let s: &str = "hello";
|
let s: &str = "hello";
|
||||||
let c: u8 = s[4]; //~ ERROR `str: std::ops::Index<{integer}>` is not satisfied
|
let c: u8 = s[4]; //~ ERROR the type `str` cannot be indexed by `{integer}`
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,10 +12,10 @@ fn bot<T>() -> T { loop {} }
|
||||||
|
|
||||||
fn mutate(s: &mut str) {
|
fn mutate(s: &mut str) {
|
||||||
s[1..2] = bot();
|
s[1..2] = bot();
|
||||||
//~^ ERROR `str: std::marker::Sized` is not satisfied
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
//~| ERROR `str: std::marker::Sized` is not satisfied
|
//~| ERROR `str` does not have a constant size known at compile-time
|
||||||
s[1usize] = bot();
|
s[1usize] = bot();
|
||||||
//~^ ERROR `str: std::ops::IndexMut<usize>` is not satisfied
|
//~^ ERROR the type `str` cannot be mutably indexed by `usize`
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {}
|
pub fn main() {}
|
||||||
|
|
|
@ -56,6 +56,6 @@ fn foo<'z>() where &'z (): Sized {
|
||||||
//[normal]~| found type `fn() {foo::<'static>}`
|
//[normal]~| found type `fn() {foo::<'static>}`
|
||||||
|
|
||||||
<str as Foo<u8>>::bar;
|
<str as Foo<u8>>::bar;
|
||||||
//[verbose]~^ ERROR `str: std::marker::Sized` is not satisfied
|
//[verbose]~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
//[normal]~^^ ERROR `str: std::marker::Sized` is not satisfied
|
//[normal]~^^ ERROR `str` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ trait Foo {
|
||||||
// This should emit the less confusing error, not the more confusing one.
|
// This should emit the less confusing error, not the more confusing one.
|
||||||
|
|
||||||
fn foo(_x: Foo + Send) {
|
fn foo(_x: Foo + Send) {
|
||||||
//~^ ERROR the trait bound `Foo + std::marker::Send + 'static: std::marker::Sized` is not
|
//~^ ERROR `Foo + std::marker::Send + 'static` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -31,8 +31,8 @@ fn dummy() {
|
||||||
impl !Send for TestType {}
|
impl !Send for TestType {}
|
||||||
|
|
||||||
Outer(TestType);
|
Outer(TestType);
|
||||||
//~^ ERROR `dummy::TestType: std::marker::Send` is not satisfied
|
//~^ ERROR `dummy::TestType` cannot be sent between threads safely
|
||||||
//~| ERROR `dummy::TestType: std::marker::Send` is not satisfied
|
//~| ERROR `dummy::TestType` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dummy1b() {
|
fn dummy1b() {
|
||||||
|
@ -40,7 +40,7 @@ fn dummy1b() {
|
||||||
impl !Send for TestType {}
|
impl !Send for TestType {}
|
||||||
|
|
||||||
is_send(TestType);
|
is_send(TestType);
|
||||||
//~^ ERROR `dummy1b::TestType: std::marker::Send` is not satisfied
|
//~^ ERROR `dummy1b::TestType` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dummy1c() {
|
fn dummy1c() {
|
||||||
|
@ -48,7 +48,7 @@ fn dummy1c() {
|
||||||
impl !Send for TestType {}
|
impl !Send for TestType {}
|
||||||
|
|
||||||
is_send((8, TestType));
|
is_send((8, TestType));
|
||||||
//~^ ERROR `dummy1c::TestType: std::marker::Send` is not satisfied
|
//~^ ERROR `dummy1c::TestType` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dummy2() {
|
fn dummy2() {
|
||||||
|
@ -56,7 +56,7 @@ fn dummy2() {
|
||||||
impl !Send for TestType {}
|
impl !Send for TestType {}
|
||||||
|
|
||||||
is_send(Box::new(TestType));
|
is_send(Box::new(TestType));
|
||||||
//~^ ERROR `dummy2::TestType: std::marker::Send` is not satisfied
|
//~^ ERROR `dummy2::TestType` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dummy3() {
|
fn dummy3() {
|
||||||
|
@ -64,7 +64,7 @@ fn dummy3() {
|
||||||
impl !Send for TestType {}
|
impl !Send for TestType {}
|
||||||
|
|
||||||
is_send(Box::new(Outer2(TestType)));
|
is_send(Box::new(Outer2(TestType)));
|
||||||
//~^ ERROR `dummy3::TestType: std::marker::Send` is not satisfied
|
//~^ ERROR `dummy3::TestType` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -74,5 +74,5 @@ fn main() {
|
||||||
// This will complain about a missing Send impl because `Sync` is implement *just*
|
// This will complain about a missing Send impl because `Sync` is implement *just*
|
||||||
// for T that are `Send`. Look at #20366 and #19950
|
// for T that are `Send`. Look at #20366 and #19950
|
||||||
is_sync(Outer2(TestType));
|
is_sync(Outer2(TestType));
|
||||||
//~^ ERROR `main::TestType: std::marker::Send` is not satisfied
|
//~^ ERROR `main::TestType` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,5 +27,5 @@ fn is_send<T: Send>() {}
|
||||||
fn main() {
|
fn main() {
|
||||||
is_send::<MySendable>();
|
is_send::<MySendable>();
|
||||||
is_send::<MyNotSendable>();
|
is_send::<MyNotSendable>();
|
||||||
//~^ ERROR `MyNotSendable: std::marker::Send` is not satisfied
|
//~^ ERROR `MyNotSendable` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,13 +11,15 @@
|
||||||
#![feature(untagged_unions)]
|
#![feature(untagged_unions)]
|
||||||
|
|
||||||
union U {
|
union U {
|
||||||
a: str, //~ ERROR the trait bound `str: std::marker::Sized` is not satisfied
|
a: str,
|
||||||
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
b: u8,
|
b: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
union W {
|
union W {
|
||||||
a: u8,
|
a: u8,
|
||||||
b: str, //~ ERROR the trait bound `str: std::marker::Sized` is not satisfied
|
b: str,
|
||||||
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -9,5 +9,6 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
fn bar<T: Sized>() { }
|
fn bar<T: Sized>() { }
|
||||||
fn foo<T: ?Sized>() { bar::<T>() } //~ ERROR `T: std::marker::Sized` is not satisfied
|
fn foo<T: ?Sized>() { bar::<T>() }
|
||||||
|
//~^ ERROR `T` does not have a constant size known at compile-time
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -15,7 +15,7 @@ fn not_sized<T: ?Sized>() { }
|
||||||
enum Foo<U> { FooSome(U), FooNone }
|
enum Foo<U> { FooSome(U), FooNone }
|
||||||
fn foo1<T>() { not_sized::<Foo<T>>() } // Hunky dory.
|
fn foo1<T>() { not_sized::<Foo<T>>() } // Hunky dory.
|
||||||
fn foo2<T: ?Sized>() { not_sized::<Foo<T>>() }
|
fn foo2<T: ?Sized>() { not_sized::<Foo<T>>() }
|
||||||
//~^ ERROR `T: std::marker::Sized` is not satisfied
|
//~^ ERROR `T` does not have a constant size known at compile-time
|
||||||
//
|
//
|
||||||
// Not OK: `T` is not sized.
|
// Not OK: `T` is not sized.
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@
|
||||||
|
|
||||||
struct S5<Y>(Y);
|
struct S5<Y>(Y);
|
||||||
|
|
||||||
impl<X: ?Sized> S5<X> { //~ ERROR E0277
|
impl<X: ?Sized> S5<X> {
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -15,14 +15,14 @@ fn not_sized<T: ?Sized>() { }
|
||||||
struct Foo<T> { data: T }
|
struct Foo<T> { data: T }
|
||||||
fn foo1<T>() { not_sized::<Foo<T>>() } // Hunky dory.
|
fn foo1<T>() { not_sized::<Foo<T>>() } // Hunky dory.
|
||||||
fn foo2<T: ?Sized>() { not_sized::<Foo<T>>() }
|
fn foo2<T: ?Sized>() { not_sized::<Foo<T>>() }
|
||||||
//~^ ERROR `T: std::marker::Sized` is not satisfied
|
//~^ ERROR `T` does not have a constant size known at compile-time
|
||||||
//
|
//
|
||||||
// Not OK: `T` is not sized.
|
// Not OK: `T` is not sized.
|
||||||
|
|
||||||
struct Bar<T: ?Sized> { data: T }
|
struct Bar<T: ?Sized> { data: T }
|
||||||
fn bar1<T: ?Sized>() { not_sized::<Bar<T>>() }
|
fn bar1<T: ?Sized>() { not_sized::<Bar<T>>() }
|
||||||
fn bar2<T: ?Sized>() { is_sized::<Bar<T>>() }
|
fn bar2<T: ?Sized>() { is_sized::<Bar<T>>() }
|
||||||
//~^ ERROR `T: std::marker::Sized` is not satisfied
|
//~^ ERROR `T` does not have a constant size known at compile-time
|
||||||
//
|
//
|
||||||
// Not OK: `Bar<T>` is not sized, but it should be.
|
// Not OK: `Bar<T>` is not sized, but it should be.
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,8 @@ trait T3<Z: ?Sized> {
|
||||||
|
|
||||||
struct S5<Y>(Y);
|
struct S5<Y>(Y);
|
||||||
|
|
||||||
impl<X: ?Sized> T3<X> for S5<X> { //~ ERROR E0277
|
impl<X: ?Sized> T3<X> for S5<X> {
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -16,7 +16,7 @@ trait T2<Z> {
|
||||||
}
|
}
|
||||||
struct S4<Y: ?Sized>(Box<Y>);
|
struct S4<Y: ?Sized>(Box<Y>);
|
||||||
impl<X: ?Sized> T2<X> for S4<X> {
|
impl<X: ?Sized> T2<X> for S4<X> {
|
||||||
//~^ ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -15,7 +15,7 @@ use std::marker;
|
||||||
// Unbounded.
|
// Unbounded.
|
||||||
fn f1<X: ?Sized>(x: &X) {
|
fn f1<X: ?Sized>(x: &X) {
|
||||||
f2::<X>(x);
|
f2::<X>(x);
|
||||||
//~^ ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
fn f2<X>(x: &X) {
|
fn f2<X>(x: &X) {
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ trait T {
|
||||||
}
|
}
|
||||||
fn f3<X: ?Sized + T>(x: &X) {
|
fn f3<X: ?Sized + T>(x: &X) {
|
||||||
f4::<X>(x);
|
f4::<X>(x);
|
||||||
//~^ ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
fn f4<X: T>(x: &X) {
|
fn f4<X: T>(x: &X) {
|
||||||
}
|
}
|
||||||
|
@ -41,20 +41,20 @@ struct S<X: ?Sized> {
|
||||||
|
|
||||||
fn f8<X: ?Sized>(x1: &S<X>, x2: &S<X>) {
|
fn f8<X: ?Sized>(x1: &S<X>, x2: &S<X>) {
|
||||||
f5(x1);
|
f5(x1);
|
||||||
//~^ ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
f6(x2); // ok
|
f6(x2); // ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test some tuples.
|
// Test some tuples.
|
||||||
fn f9<X: ?Sized>(x1: Box<S<X>>) {
|
fn f9<X: ?Sized>(x1: Box<S<X>>) {
|
||||||
f5(&(*x1, 34));
|
f5(&(*x1, 34));
|
||||||
//~^ ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn f10<X: ?Sized>(x1: Box<S<X>>) {
|
fn f10<X: ?Sized>(x1: Box<S<X>>) {
|
||||||
f5(&(32, *x1));
|
f5(&(32, *x1));
|
||||||
//~^ ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
//~| ERROR `X: std::marker::Sized` is not satisfied
|
//~| ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
|
|
|
@ -11,27 +11,33 @@
|
||||||
// Test `?Sized` types not allowed in fields (except the last one).
|
// Test `?Sized` types not allowed in fields (except the last one).
|
||||||
|
|
||||||
struct S1<X: ?Sized> {
|
struct S1<X: ?Sized> {
|
||||||
f1: X, //~ ERROR `X: std::marker::Sized` is not satisfied
|
f1: X,
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
f2: isize,
|
f2: isize,
|
||||||
}
|
}
|
||||||
struct S2<X: ?Sized> {
|
struct S2<X: ?Sized> {
|
||||||
f: isize,
|
f: isize,
|
||||||
g: X, //~ ERROR `X: std::marker::Sized` is not satisfied
|
g: X,
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
h: isize,
|
h: isize,
|
||||||
}
|
}
|
||||||
struct S3 {
|
struct S3 {
|
||||||
f: str, //~ ERROR `str: std::marker::Sized` is not satisfied
|
f: str,
|
||||||
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
g: [usize]
|
g: [usize]
|
||||||
}
|
}
|
||||||
struct S4 {
|
struct S4 {
|
||||||
f: [u8], //~ ERROR `[u8]: std::marker::Sized` is not satisfied
|
f: [u8],
|
||||||
|
//~^ ERROR `[u8]` does not have a constant size known at compile-time
|
||||||
g: usize
|
g: usize
|
||||||
}
|
}
|
||||||
enum E<X: ?Sized> {
|
enum E<X: ?Sized> {
|
||||||
V1(X, isize), //~ERROR `X: std::marker::Sized` is not satisfied
|
V1(X, isize),
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
enum F<X: ?Sized> {
|
enum F<X: ?Sized> {
|
||||||
V2{f1: X, f: isize}, //~ERROR `X: std::marker::Sized` is not satisfied
|
V2{f1: X, f: isize},
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
|
|
|
@ -14,28 +14,41 @@ trait T {}
|
||||||
|
|
||||||
fn f1<W: ?Sized, X: ?Sized, Y: ?Sized, Z: ?Sized>(x: &X) {
|
fn f1<W: ?Sized, X: ?Sized, Y: ?Sized, Z: ?Sized>(x: &X) {
|
||||||
let _: W; // <-- this is OK, no bindings created, no initializer.
|
let _: W; // <-- this is OK, no bindings created, no initializer.
|
||||||
let _: (isize, (X, isize)); //~ERROR `X: std::marker::Sized` is not satisfie
|
let _: (isize, (X, isize));
|
||||||
let y: Y; //~ERROR `Y: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
let y: (isize, (Z, usize)); //~ERROR `Z: std::marker::Sized` is not satisfied
|
let y: Y;
|
||||||
|
//~^ ERROR `Y` does not have a constant size known at compile-time
|
||||||
|
let y: (isize, (Z, usize));
|
||||||
|
//~^ ERROR `Z` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
fn f2<X: ?Sized, Y: ?Sized>(x: &X) {
|
fn f2<X: ?Sized, Y: ?Sized>(x: &X) {
|
||||||
let y: X; //~ERROR `X: std::marker::Sized` is not satisfied
|
let y: X;
|
||||||
let y: (isize, (Y, isize)); //~ERROR `Y: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
|
let y: (isize, (Y, isize));
|
||||||
|
//~^ ERROR `Y` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn f3<X: ?Sized>(x1: Box<X>, x2: Box<X>, x3: Box<X>) {
|
fn f3<X: ?Sized>(x1: Box<X>, x2: Box<X>, x3: Box<X>) {
|
||||||
let y: X = *x1; //~ERROR `X: std::marker::Sized` is not satisfied
|
let y: X = *x1;
|
||||||
let y = *x2; //~ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
let (y, z) = (*x3, 4); //~ERROR `X: std::marker::Sized` is not satisfied
|
let y = *x2;
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
|
let (y, z) = (*x3, 4);
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
fn f4<X: ?Sized + T>(x1: Box<X>, x2: Box<X>, x3: Box<X>) {
|
fn f4<X: ?Sized + T>(x1: Box<X>, x2: Box<X>, x3: Box<X>) {
|
||||||
let y: X = *x1; //~ERROR `X: std::marker::Sized` is not satisfied
|
let y: X = *x1;
|
||||||
let y = *x2; //~ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
let (y, z) = (*x3, 4); //~ERROR `X: std::marker::Sized` is not satisfied
|
let y = *x2;
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
|
let (y, z) = (*x3, 4);
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn g1<X: ?Sized>(x: X) {} //~ERROR `X: std::marker::Sized` is not satisfied
|
fn g1<X: ?Sized>(x: X) {}
|
||||||
fn g2<X: ?Sized + T>(x: X) {} //~ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
|
fn g2<X: ?Sized + T>(x: X) {}
|
||||||
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
|
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ trait T1<Z: T> {
|
||||||
|
|
||||||
struct S3<Y: ?Sized>(Box<Y>);
|
struct S3<Y: ?Sized>(Box<Y>);
|
||||||
impl<X: ?Sized + T> T1<X> for S3<X> {
|
impl<X: ?Sized + T> T1<X> for S3<X> {
|
||||||
//~^ ERROR `X: std::marker::Sized` is not satisfied
|
//~^ ERROR `X` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
|
|
@ -11,16 +11,16 @@
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
const CONST_0: Debug+Sync = *(&0 as &(Debug+Sync));
|
const CONST_0: Debug+Sync = *(&0 as &(Debug+Sync));
|
||||||
//~^ ERROR `std::fmt::Debug + std::marker::Sync + 'static: std::marker::Sized` is not satisfied
|
//~^ ERROR `std::fmt::Debug + std::marker::Sync + 'static` does not have a constant size known at
|
||||||
|
|
||||||
const CONST_FOO: str = *"foo";
|
const CONST_FOO: str = *"foo";
|
||||||
//~^ ERROR `str: std::marker::Sized` is not satisfied
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
|
|
||||||
static STATIC_1: Debug+Sync = *(&1 as &(Debug+Sync));
|
static STATIC_1: Debug+Sync = *(&1 as &(Debug+Sync));
|
||||||
//~^ ERROR `std::fmt::Debug + std::marker::Sync + 'static: std::marker::Sized` is not satisfied
|
//~^ ERROR `std::fmt::Debug + std::marker::Sync + 'static` does not have a constant size known at
|
||||||
|
|
||||||
static STATIC_BAR: str = *"bar";
|
static STATIC_BAR: str = *"bar";
|
||||||
//~^ ERROR `str: std::marker::Sized` is not satisfied
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("{:?} {:?} {:?} {:?}", &CONST_0, &CONST_FOO, &STATIC_1, &STATIC_BAR);
|
println!("{:?} {:?} {:?} {:?}", &CONST_0, &CONST_FOO, &STATIC_1, &STATIC_BAR);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0277]: the trait bound `std::fmt::Debug + std::marker::Sync + 'static: std::marker::Sized` is not satisfied
|
error[E0277]: `std::fmt::Debug + std::marker::Sync + 'static` does not have a constant size known at compile-time
|
||||||
--> $DIR/const-unsized.rs:13:29
|
--> $DIR/const-unsized.rs:13:29
|
||||||
|
|
|
|
||||||
LL | const CONST_0: Debug+Sync = *(&0 as &(Debug+Sync));
|
LL | const CONST_0: Debug+Sync = *(&0 as &(Debug+Sync));
|
||||||
|
@ -7,7 +7,7 @@ LL | const CONST_0: Debug+Sync = *(&0 as &(Debug+Sync));
|
||||||
= 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 `std::fmt::Debug + std::marker::Sync + 'static`
|
||||||
= note: constant expressions must have a statically known size
|
= note: constant expressions must have a statically known size
|
||||||
|
|
||||||
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
error[E0277]: `str` does not have a constant size known at compile-time
|
||||||
--> $DIR/const-unsized.rs:16:24
|
--> $DIR/const-unsized.rs:16:24
|
||||||
|
|
|
|
||||||
LL | const CONST_FOO: str = *"foo";
|
LL | const CONST_FOO: str = *"foo";
|
||||||
|
@ -16,7 +16,7 @@ LL | const CONST_FOO: str = *"foo";
|
||||||
= help: the trait `std::marker::Sized` is not implemented for `str`
|
= help: the trait `std::marker::Sized` is not implemented for `str`
|
||||||
= note: constant expressions must have a statically known size
|
= note: constant expressions must have a statically known size
|
||||||
|
|
||||||
error[E0277]: the trait bound `std::fmt::Debug + std::marker::Sync + 'static: std::marker::Sized` is not satisfied
|
error[E0277]: `std::fmt::Debug + std::marker::Sync + 'static` does not have a constant size known at compile-time
|
||||||
--> $DIR/const-unsized.rs:19:31
|
--> $DIR/const-unsized.rs:19:31
|
||||||
|
|
|
|
||||||
LL | static STATIC_1: Debug+Sync = *(&1 as &(Debug+Sync));
|
LL | static STATIC_1: Debug+Sync = *(&1 as &(Debug+Sync));
|
||||||
|
@ -25,7 +25,7 @@ LL | static STATIC_1: Debug+Sync = *(&1 as &(Debug+Sync));
|
||||||
= 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 `std::fmt::Debug + std::marker::Sync + 'static`
|
||||||
= note: constant expressions must have a statically known size
|
= note: constant expressions must have a statically known size
|
||||||
|
|
||||||
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
error[E0277]: `str` does not have a constant size known at compile-time
|
||||||
--> $DIR/const-unsized.rs:22:26
|
--> $DIR/const-unsized.rs:22:26
|
||||||
|
|
|
|
||||||
LL | static STATIC_BAR: str = *"bar";
|
LL | static STATIC_BAR: str = *"bar";
|
||||||
|
|
|
@ -24,5 +24,5 @@ fn is_send<T: Send>() { }
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
is_send::<Foo>();
|
is_send::<Foo>();
|
||||||
//~^ ERROR the trait bound `*const u8: std::marker::Send` is not satisfied in `Foo`
|
//~^ ERROR `*const u8` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0277]: the trait bound `*const u8: std::marker::Send` is not satisfied in `Foo`
|
error[E0277]: `*const u8` cannot be sent between threads safely
|
||||||
--> $DIR/E0277-2.rs:26:5
|
--> $DIR/E0277-2.rs:26:5
|
||||||
|
|
|
|
||||||
LL | is_send::<Foo>();
|
LL | is_send::<Foo>();
|
||||||
|
|
|
@ -21,7 +21,7 @@ fn some_func<T: Foo>(foo: T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn f(p: Path) { }
|
fn f(p: Path) { }
|
||||||
//~^ ERROR the trait bound `[u8]: std::marker::Sized` is not satisfied in `std::path::Path`
|
//~^ ERROR `[u8]` does not have a constant size known at compile-time
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
some_func(5i32);
|
some_func(5i32);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0277]: the trait bound `[u8]: std::marker::Sized` is not satisfied in `std::path::Path`
|
error[E0277]: `[u8]` does not have a constant size known at compile-time
|
||||||
--> $DIR/E0277.rs:23:6
|
--> $DIR/E0277.rs:23:6
|
||||||
|
|
|
|
||||||
LL | fn f(p: Path) { }
|
LL | fn f(p: Path) { }
|
||||||
|
|
|
@ -87,7 +87,7 @@ LL | | }
|
||||||
= help: see issue #48214
|
= help: see issue #48214
|
||||||
= help: add #![feature(trivial_bounds)] to the crate attributes to enable
|
= help: add #![feature(trivial_bounds)] to the crate attributes to enable
|
||||||
|
|
||||||
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
error[E0277]: `str` does not have a constant size known at compile-time
|
||||||
--> $DIR/feature-gate-trivial_bounds.rs:62:1
|
--> $DIR/feature-gate-trivial_bounds.rs:62:1
|
||||||
|
|
|
|
||||||
LL | struct TwoStrs(str, str) where str: Sized; //~ ERROR
|
LL | struct TwoStrs(str, str) where str: Sized; //~ ERROR
|
||||||
|
@ -97,7 +97,7 @@ LL | struct TwoStrs(str, str) where str: Sized; //~ ERROR
|
||||||
= help: see issue #48214
|
= help: see issue #48214
|
||||||
= help: add #![feature(trivial_bounds)] to the crate attributes to enable
|
= help: add #![feature(trivial_bounds)] to the crate attributes to enable
|
||||||
|
|
||||||
error[E0277]: the trait bound `A + 'static: std::marker::Sized` is not satisfied in `Dst<A + 'static>`
|
error[E0277]: `A + 'static` does not have a constant size known at compile-time
|
||||||
--> $DIR/feature-gate-trivial_bounds.rs:65:1
|
--> $DIR/feature-gate-trivial_bounds.rs:65:1
|
||||||
|
|
|
|
||||||
LL | / fn unsized_local() where Dst<A>: Sized { //~ ERROR
|
LL | / fn unsized_local() where Dst<A>: Sized { //~ ERROR
|
||||||
|
@ -110,7 +110,7 @@ LL | | }
|
||||||
= help: see issue #48214
|
= help: see issue #48214
|
||||||
= help: add #![feature(trivial_bounds)] to the crate attributes to enable
|
= help: add #![feature(trivial_bounds)] to the crate attributes to enable
|
||||||
|
|
||||||
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
error[E0277]: `str` does not have a constant size known at compile-time
|
||||||
--> $DIR/feature-gate-trivial_bounds.rs:69:1
|
--> $DIR/feature-gate-trivial_bounds.rs:69:1
|
||||||
|
|
|
|
||||||
LL | / fn return_str() -> str where str: Sized { //~ ERROR
|
LL | / fn return_str() -> str where str: Sized { //~ ERROR
|
||||||
|
|
|
@ -14,8 +14,10 @@ use std::ops::Generator;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let s = String::from("foo");
|
let s = String::from("foo");
|
||||||
let mut gen = move || { //~ ERROR the trait bound `str: std::marker::Sized` is not satisfied
|
let mut gen = move || {
|
||||||
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
yield s[..];
|
yield s[..];
|
||||||
};
|
};
|
||||||
unsafe { gen.resume(); } //~ ERROR the trait bound `str: std::marker::Sized` is not satisfied
|
unsafe { gen.resume(); }
|
||||||
|
//~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
error[E0277]: `str` does not have a constant size known at compile-time
|
||||||
--> $DIR/sized-yield.rs:17:26
|
--> $DIR/sized-yield.rs:17:26
|
||||||
|
|
|
|
||||||
LL | let mut gen = move || { //~ ERROR the trait bound `str: std::marker::Sized` is not satisfied
|
LL | let mut gen = move || {
|
||||||
| __________________________^
|
| __________________________^
|
||||||
|
LL | | //~^ ERROR `str` does not have a constant size known at compile-time
|
||||||
LL | | yield s[..];
|
LL | | yield s[..];
|
||||||
LL | | };
|
LL | | };
|
||||||
| |____^ `str` does not have a constant size known at compile-time
|
| |____^ `str` does not have a constant size known at compile-time
|
||||||
|
@ -10,10 +11,10 @@ LL | | };
|
||||||
= help: the trait `std::marker::Sized` is not implemented for `str`
|
= help: the trait `std::marker::Sized` is not implemented for `str`
|
||||||
= note: the yield type of a generator must have a statically known size
|
= note: the yield type of a generator must have a statically known size
|
||||||
|
|
||||||
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
error[E0277]: `str` does not have a constant size known at compile-time
|
||||||
--> $DIR/sized-yield.rs:20:17
|
--> $DIR/sized-yield.rs:21:17
|
||||||
|
|
|
|
||||||
LL | unsafe { gen.resume(); } //~ ERROR the trait bound `str: std::marker::Sized` is not satisfied
|
LL | unsafe { gen.resume(); }
|
||||||
| ^^^^^^ `str` does not have a constant size known at compile-time
|
| ^^^^^^ `str` does not have a constant size known at compile-time
|
||||||
|
|
|
|
||||||
= help: the trait `std::marker::Sized` is not implemented for `str`
|
= help: the trait `std::marker::Sized` is not implemented for `str`
|
||||||
|
|
|
@ -25,7 +25,7 @@ fn cycle1() -> impl Clone {
|
||||||
//~^ ERROR cycle detected
|
//~^ ERROR cycle detected
|
||||||
//~| ERROR cycle detected
|
//~| ERROR cycle detected
|
||||||
send(cycle2().clone());
|
send(cycle2().clone());
|
||||||
//~^ ERROR Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<std::string::String>` cannot be sent between threads safely
|
||||||
|
|
||||||
Rc::new(Cell::new(5))
|
Rc::new(Cell::new(5))
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ LL | fn cycle2() -> impl Clone {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
= note: ...which again requires processing `cycle1::{{exist-impl-Trait}}`, completing the cycle
|
= note: ...which again requires processing `cycle1::{{exist-impl-Trait}}`, completing the cycle
|
||||||
|
|
||||||
error[E0277]: the trait bound `std::rc::Rc<std::string::String>: std::marker::Send` is not satisfied in `impl std::clone::Clone`
|
error[E0277]: `std::rc::Rc<std::string::String>` cannot be sent between threads safely
|
||||||
--> $DIR/auto-trait-leak.rs:27:5
|
--> $DIR/auto-trait-leak.rs:27:5
|
||||||
|
|
|
|
||||||
LL | send(cycle2().clone());
|
LL | send(cycle2().clone());
|
||||||
|
|
|
@ -23,10 +23,10 @@ fn send<T: Send>(_: T) {}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
send(before());
|
send(before());
|
||||||
//~^ ERROR the trait bound `std::rc::Rc<std::cell::Cell<i32>>: std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<std::cell::Cell<i32>>` cannot be sent between threads safely
|
||||||
|
|
||||||
send(after());
|
send(after());
|
||||||
//~^ ERROR the trait bound `std::rc::Rc<std::cell::Cell<i32>>: std::marker::Send` is not satisfied
|
//~^ ERROR `std::rc::Rc<std::cell::Cell<i32>>` cannot be sent between threads safely
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deferred path, main has to wait until typeck finishes,
|
// Deferred path, main has to wait until typeck finishes,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
error[E0277]: the trait bound `std::rc::Rc<std::cell::Cell<i32>>: std::marker::Send` is not satisfied in `impl std::ops::Fn<(i32,)>`
|
error[E0277]: `std::rc::Rc<std::cell::Cell<i32>>` cannot be sent between threads safely
|
||||||
--> $DIR/auto-trait-leak2.rs:25:5
|
--> $DIR/auto-trait-leak2.rs:25:5
|
||||||
|
|
|
|
||||||
LL | send(before());
|
LL | send(before());
|
||||||
|
@ -13,7 +13,7 @@ note: required by `send`
|
||||||
LL | fn send<T: Send>(_: T) {}
|
LL | fn send<T: Send>(_: T) {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0277]: the trait bound `std::rc::Rc<std::cell::Cell<i32>>: std::marker::Send` is not satisfied in `impl std::ops::Fn<(i32,)>`
|
error[E0277]: `std::rc::Rc<std::cell::Cell<i32>>` cannot be sent between threads safely
|
||||||
--> $DIR/auto-trait-leak2.rs:28:5
|
--> $DIR/auto-trait-leak2.rs:28:5
|
||||||
|
|
|
|
||||||
LL | send(after());
|
LL | send(after());
|
||||||
|
|
|
@ -12,5 +12,6 @@ use std::cell::Cell;
|
||||||
use std::panic::catch_unwind;
|
use std::panic::catch_unwind;
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut x = Cell::new(22);
|
let mut x = Cell::new(22);
|
||||||
catch_unwind(|| { x.set(23); }); //~ ERROR the trait bound
|
catch_unwind(|| { x.set(23); });
|
||||||
|
//~^ ERROR the type `std::cell::UnsafeCell<i32>` may contain interior mutability and a
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
error[E0277]: the trait bound `std::cell::UnsafeCell<i32>: std::panic::RefUnwindSafe` is not satisfied in `std::cell::Cell<i32>`
|
error[E0277]: the type `std::cell::UnsafeCell<i32>` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary
|
||||||
--> $DIR/interior-mutability.rs:15:5
|
--> $DIR/interior-mutability.rs:15:5
|
||||||
|
|
|
|
||||||
LL | catch_unwind(|| { x.set(23); }); //~ ERROR the trait bound
|
LL | catch_unwind(|| { x.set(23); });
|
||||||
| ^^^^^^^^^^^^ the type std::cell::UnsafeCell<i32> may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary
|
| ^^^^^^^^^^^^ `std::cell::UnsafeCell<i32>` may contain interior mutability and a reference may not be safely transferrable across a catch_unwind boundary
|
||||||
|
|
|
|
||||||
= help: within `std::cell::Cell<i32>`, the trait `std::panic::RefUnwindSafe` is not implemented for `std::cell::UnsafeCell<i32>`
|
= help: within `std::cell::Cell<i32>`, the trait `std::panic::RefUnwindSafe` is not implemented for `std::cell::UnsafeCell<i32>`
|
||||||
= note: required because it appears within the type `std::cell::Cell<i32>`
|
= note: required because it appears within the type `std::cell::Cell<i32>`
|
||||||
|
|
|
@ -13,6 +13,6 @@ fn main() {
|
||||||
2 as usize - Some(1); //~ ERROR cannot subtract `std::option::Option<{integer}>` from `usize`
|
2 as usize - Some(1); //~ ERROR cannot subtract `std::option::Option<{integer}>` from `usize`
|
||||||
3 * (); //~ ERROR cannot multiply `()` to `{integer}`
|
3 * (); //~ ERROR cannot multiply `()` to `{integer}`
|
||||||
4 / ""; //~ ERROR cannot divide `{integer}` by `&str`
|
4 / ""; //~ ERROR cannot divide `{integer}` by `&str`
|
||||||
5 < String::new(); //~ ERROR is not satisfied
|
5 < String::new(); //~ ERROR can't compare `{integer}` with `std::string::String`
|
||||||
6 == Ok(1); //~ ERROR is not satisfied
|
6 == Ok(1); //~ ERROR can't compare `{integer}` with `std::result::Result<{integer}, _>`
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,19 +30,19 @@ LL | 4 / ""; //~ ERROR cannot divide `{integer}` by `&str`
|
||||||
|
|
|
|
||||||
= help: the trait `std::ops::Div<&str>` is not implemented for `{integer}`
|
= help: the trait `std::ops::Div<&str>` is not implemented for `{integer}`
|
||||||
|
|
||||||
error[E0277]: the trait bound `{integer}: std::cmp::PartialOrd<std::string::String>` is not satisfied
|
error[E0277]: can't compare `{integer}` with `std::string::String`
|
||||||
--> $DIR/binops.rs:16:7
|
--> $DIR/binops.rs:16:7
|
||||||
|
|
|
|
||||||
LL | 5 < String::new(); //~ ERROR is not satisfied
|
LL | 5 < String::new(); //~ ERROR can't compare `{integer}` with `std::string::String`
|
||||||
| ^ can't compare `{integer}` with `std::string::String`
|
| ^ no implementation for `{integer} < std::string::String` and `{integer} > std::string::String`
|
||||||
|
|
|
|
||||||
= help: the trait `std::cmp::PartialOrd<std::string::String>` is not implemented for `{integer}`
|
= help: the trait `std::cmp::PartialOrd<std::string::String>` is not implemented for `{integer}`
|
||||||
|
|
||||||
error[E0277]: the trait bound `{integer}: std::cmp::PartialEq<std::result::Result<{integer}, _>>` is not satisfied
|
error[E0277]: can't compare `{integer}` with `std::result::Result<{integer}, _>`
|
||||||
--> $DIR/binops.rs:17:7
|
--> $DIR/binops.rs:17:7
|
||||||
|
|
|
|
||||||
LL | 6 == Ok(1); //~ ERROR is not satisfied
|
LL | 6 == Ok(1); //~ ERROR can't compare `{integer}` with `std::result::Result<{integer}, _>`
|
||||||
| ^^ can't compare `{integer}` with `std::result::Result<{integer}, _>`
|
| ^^ no implementation for `{integer} == std::result::Result<{integer}, _>`
|
||||||
|
|
|
|
||||||
= help: the trait `std::cmp::PartialEq<std::result::Result<{integer}, _>>` is not implemented for `{integer}`
|
= help: the trait `std::cmp::PartialEq<std::result::Result<{integer}, _>>` is not implemented for `{integer}`
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ fn main()
|
||||||
|
|
||||||
let _ = 42usize as *const [u8]; //~ ERROR is invalid
|
let _ = 42usize as *const [u8]; //~ ERROR is invalid
|
||||||
let _ = v as *const [u8]; //~ ERROR cannot cast
|
let _ = v as *const [u8]; //~ ERROR cannot cast
|
||||||
let _ = fat_v as *const Foo; //~ ERROR is not satisfied
|
let _ = fat_v as *const Foo; //~ ERROR `[u8]` does not have a constant size known at compile-time
|
||||||
let _ = foo as *const str; //~ ERROR is invalid
|
let _ = foo as *const str; //~ ERROR is invalid
|
||||||
let _ = foo as *mut str; //~ ERROR is invalid
|
let _ = foo as *mut str; //~ ERROR is invalid
|
||||||
let _ = main as *mut str; //~ ERROR is invalid
|
let _ = main as *mut str; //~ ERROR is invalid
|
||||||
|
@ -69,7 +69,7 @@ fn main()
|
||||||
let _ = fat_sv as usize; //~ ERROR is invalid
|
let _ = fat_sv as usize; //~ ERROR is invalid
|
||||||
|
|
||||||
let a : *const str = "hello";
|
let a : *const str = "hello";
|
||||||
let _ = a as *const Foo; //~ ERROR is not satisfied
|
let _ = a as *const Foo; //~ ERROR `str` does not have a constant size known at compile-time
|
||||||
|
|
||||||
// check no error cascade
|
// check no error cascade
|
||||||
let _ = main.f as *const u32; //~ ERROR no field
|
let _ = main.f as *const u32; //~ ERROR no field
|
||||||
|
|
|
@ -216,19 +216,19 @@ LL | let _ = cf as *const Bar; //~ ERROR is invalid
|
||||||
|
|
|
|
||||||
= note: vtable kinds may not match
|
= note: vtable kinds may not match
|
||||||
|
|
||||||
error[E0277]: the trait bound `[u8]: std::marker::Sized` is not satisfied
|
error[E0277]: `[u8]` does not have a constant size known at compile-time
|
||||||
--> $DIR/cast-rfc0401.rs:63:13
|
--> $DIR/cast-rfc0401.rs:63:13
|
||||||
|
|
|
|
||||||
LL | let _ = fat_v as *const Foo; //~ ERROR is not satisfied
|
LL | let _ = fat_v as *const Foo; //~ ERROR `[u8]` does not have a constant size known at compile-time
|
||||||
| ^^^^^ `[u8]` does not have a constant size known at compile-time
|
| ^^^^^ `[u8]` does not have a constant size known at compile-time
|
||||||
|
|
|
|
||||||
= help: the trait `std::marker::Sized` is not implemented for `[u8]`
|
= help: the trait `std::marker::Sized` is not implemented for `[u8]`
|
||||||
= note: required for the cast to the object type `Foo`
|
= note: required for the cast to the object type `Foo`
|
||||||
|
|
||||||
error[E0277]: the trait bound `str: std::marker::Sized` is not satisfied
|
error[E0277]: `str` does not have a constant size known at compile-time
|
||||||
--> $DIR/cast-rfc0401.rs:72:13
|
--> $DIR/cast-rfc0401.rs:72:13
|
||||||
|
|
|
|
||||||
LL | let _ = a as *const Foo; //~ ERROR is not satisfied
|
LL | let _ = a as *const Foo; //~ ERROR `str` does not have a constant size known at compile-time
|
||||||
| ^ `str` does not have a constant size known at compile-time
|
| ^ `str` does not have a constant size known at compile-time
|
||||||
|
|
|
|
||||||
= help: the trait `std::marker::Sized` is not implemented for `str`
|
= help: the trait `std::marker::Sized` is not implemented for `str`
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
error[E0277]: the trait bound `&T: std::cmp::PartialEq<T>` is not satisfied
|
error[E0277]: can't compare `&T` with `T`
|
||||||
--> $DIR/partialeq_help.rs:12:7
|
--> $DIR/partialeq_help.rs:12:7
|
||||||
|
|
|
|
||||||
LL | a == b; //~ ERROR E0277
|
LL | a == b; //~ ERROR E0277
|
||||||
| ^^ can't compare `&T` with `T`
|
| ^^ no implementation for `&T == T`
|
||||||
|
|
|
|
||||||
= help: the trait `std::cmp::PartialEq<T>` is not implemented for `&T`
|
= help: the trait `std::cmp::PartialEq<T>` is not implemented for `&T`
|
||||||
= help: consider adding a `where &T: std::cmp::PartialEq<T>` bound
|
= help: consider adding a `where &T: std::cmp::PartialEq<T>` bound
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
trait I {}
|
trait I {}
|
||||||
type K = I+'static;
|
type K = I+'static;
|
||||||
|
|
||||||
fn foo(_x: K) {} //~ ERROR: `I + 'static: std::marker::Sized` is not satisfied
|
fn foo(_x: K) {}
|
||||||
|
//~^ ERROR `I + 'static` does not have a constant size known at compile-time
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue