add WRAPPED_SELF: Option<Self>
in the test
This commit is contained in:
parent
2fc9064921
commit
d5af360bb2
@ -121,18 +121,24 @@ where
|
|||||||
const BOUNDED: T::ToBeBounded = AtomicUsize::new(15);
|
const BOUNDED: T::ToBeBounded = AtomicUsize::new(15);
|
||||||
}
|
}
|
||||||
|
|
||||||
trait SelfType {
|
// a constant whose type is `Self` should be linted at the implementation site as well.
|
||||||
|
// (`Option` requires `Sized` bound.)
|
||||||
|
trait SelfType: Sized {
|
||||||
const SELF: Self;
|
const SELF: Self;
|
||||||
|
// this was the one in the original issue (#5050).
|
||||||
|
const WRAPPED_SELF: Option<Self>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SelfType for u64 {
|
impl SelfType for u64 {
|
||||||
const SELF: Self = 16;
|
const SELF: Self = 16;
|
||||||
|
const WRAPPED_SELF: Option<Self> = Some(20);
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SelfType for AtomicUsize {
|
impl SelfType for AtomicUsize {
|
||||||
// this (interior mutable `Self` const) exists in `parking_lot`.
|
// this (interior mutable `Self` const) exists in `parking_lot`.
|
||||||
// `const_trait_impl` will replace it in the future, hopefully.
|
// `const_trait_impl` will replace it in the future, hopefully.
|
||||||
const SELF: Self = AtomicUsize::new(17); //~ ERROR interior mutable
|
const SELF: Self = AtomicUsize::new(17); //~ ERROR interior mutable
|
||||||
|
const WRAPPED_SELF: Option<Self> = Some(AtomicUsize::new(21)); //~ ERROR interior mutable
|
||||||
}
|
}
|
||||||
|
|
||||||
// Even though a constant contains a generic type, if it also have a interior mutable type,
|
// Even though a constant contains a generic type, if it also have a interior mutable type,
|
||||||
|
@ -77,28 +77,34 @@ LL | const BOUNDED: T::ToBeBounded; //~ ERROR interior mutable
|
|||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a `const` item should never be interior mutable
|
error: a `const` item should never be interior mutable
|
||||||
--> $DIR/declare_interior_mutable_const.rs:135:5
|
--> $DIR/declare_interior_mutable_const.rs:140:5
|
||||||
|
|
|
|
||||||
LL | const SELF: Self = AtomicUsize::new(17); //~ ERROR interior mutable
|
LL | const SELF: Self = AtomicUsize::new(17); //~ ERROR interior mutable
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a `const` item should never be interior mutable
|
error: a `const` item should never be interior mutable
|
||||||
--> $DIR/declare_interior_mutable_const.rs:143:5
|
--> $DIR/declare_interior_mutable_const.rs:141:5
|
||||||
|
|
|
||||||
|
LL | const WRAPPED_SELF: Option<Self> = Some(AtomicUsize::new(21)); //~ ERROR interior mutable
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: a `const` item should never be interior mutable
|
||||||
|
--> $DIR/declare_interior_mutable_const.rs:149:5
|
||||||
|
|
|
|
||||||
LL | const INDIRECT: Cell<*const T>; //~ ERROR interior mutable
|
LL | const INDIRECT: Cell<*const T>; //~ ERROR interior mutable
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a `const` item should never be interior mutable
|
error: a `const` item should never be interior mutable
|
||||||
--> $DIR/declare_interior_mutable_const.rs:159:5
|
--> $DIR/declare_interior_mutable_const.rs:165:5
|
||||||
|
|
|
|
||||||
LL | const ATOMIC: AtomicUsize = AtomicUsize::new(18); //~ ERROR interior mutable
|
LL | const ATOMIC: AtomicUsize = AtomicUsize::new(18); //~ ERROR interior mutable
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: a `const` item should never be interior mutable
|
error: a `const` item should never be interior mutable
|
||||||
--> $DIR/declare_interior_mutable_const.rs:165:5
|
--> $DIR/declare_interior_mutable_const.rs:171:5
|
||||||
|
|
|
|
||||||
LL | const BOUNDED_ASSOC_TYPE: T::ToBeBounded = AtomicUsize::new(19); //~ ERROR interior mutable
|
LL | const BOUNDED_ASSOC_TYPE: T::ToBeBounded = AtomicUsize::new(19); //~ ERROR interior mutable
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 14 previous errors
|
error: aborting due to 15 previous errors
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user