about summary refs log tree commit diff
diff options
context:
space:
mode:
authorrail <12975677+rail-rain@users.noreply.github.com>2020-09-17 21:14:14 +1200
committerrail <12975677+rail-rain@users.noreply.github.com>2020-09-17 21:14:14 +1200
commitd5af360bb2de24235d2873e926d0b6f21135ae38 (patch)
tree8dc61ee72e3ac402bc7b8c6fbd208dc5b5a31840
parent2fc9064921ce0afd2c07c5b576f95c7adf731541 (diff)
downloadrust-d5af360bb2de24235d2873e926d0b6f21135ae38.tar.gz
rust-d5af360bb2de24235d2873e926d0b6f21135ae38.zip
add `WRAPPED_SELF: Option<Self>` in the test
-rw-r--r--tests/ui/declare_interior_mutable_const.rs8
-rw-r--r--tests/ui/declare_interior_mutable_const.stderr16
2 files changed, 18 insertions, 6 deletions
diff --git a/tests/ui/declare_interior_mutable_const.rs b/tests/ui/declare_interior_mutable_const.rs
index 646d3ec8b47..3afcdca2f04 100644
--- a/tests/ui/declare_interior_mutable_const.rs
+++ b/tests/ui/declare_interior_mutable_const.rs
@@ -121,18 +121,24 @@ where
     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;
+    // this was the one in the original issue (#5050).
+    const WRAPPED_SELF: Option<Self>;
 }
 
 impl SelfType for u64 {
     const SELF: Self = 16;
+    const WRAPPED_SELF: Option<Self> = Some(20);
 }
 
 impl SelfType for AtomicUsize {
     // this (interior mutable `Self` const) exists in `parking_lot`.
     // `const_trait_impl` will replace it in the future, hopefully.
     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,
diff --git a/tests/ui/declare_interior_mutable_const.stderr b/tests/ui/declare_interior_mutable_const.stderr
index 0a0b818b8b7..5cb10be88d8 100644
--- a/tests/ui/declare_interior_mutable_const.stderr
+++ b/tests/ui/declare_interior_mutable_const.stderr
@@ -77,28 +77,34 @@ LL |     const BOUNDED: T::ToBeBounded; //~ ERROR 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
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 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
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 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
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 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
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-error: aborting due to 14 previous errors
+error: aborting due to 15 previous errors