summaryrefslogtreecommitdiffstats
path: root/src/test/ui/lint/lint-const-item-mutation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/lint/lint-const-item-mutation.rs')
-rw-r--r--src/test/ui/lint/lint-const-item-mutation.rs66
1 files changed, 0 insertions, 66 deletions
diff --git a/src/test/ui/lint/lint-const-item-mutation.rs b/src/test/ui/lint/lint-const-item-mutation.rs
deleted file mode 100644
index 4bf5e0a9e..000000000
--- a/src/test/ui/lint/lint-const-item-mutation.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-// check-pass
-
-struct MyStruct {
- field: bool,
- inner_array: [char; 1],
- raw_ptr: *mut u8
-}
-impl MyStruct {
- fn use_mut(&mut self) {}
-}
-
-struct Mutable {
- msg: &'static str,
-}
-impl Drop for Mutable {
- fn drop(&mut self) {
- println!("{}", self.msg);
- }
-}
-
-struct Mutable2 { // this one has drop glue but not a Drop impl
- msg: &'static str,
- other: String,
-}
-
-const ARRAY: [u8; 1] = [25];
-const MY_STRUCT: MyStruct = MyStruct { field: true, inner_array: ['a'], raw_ptr: 2 as *mut u8 };
-const RAW_PTR: *mut u8 = 1 as *mut u8;
-const MUTABLE: Mutable = Mutable { msg: "" };
-const MUTABLE2: Mutable2 = Mutable2 { msg: "", other: String::new() };
-const VEC: Vec<i32> = Vec::new();
-const PTR: *mut () = 1 as *mut _;
-const PTR_TO_ARRAY: *mut [u32; 4] = 0x12345678 as _;
-const ARRAY_OF_PTR: [*mut u32; 1] = [1 as *mut _];
-
-fn main() {
- ARRAY[0] = 5; //~ WARN attempting to modify
- MY_STRUCT.field = false; //~ WARN attempting to modify
- MY_STRUCT.inner_array[0] = 'b'; //~ WARN attempting to modify
- MY_STRUCT.use_mut(); //~ WARN taking
- &mut MY_STRUCT; //~ WARN taking
- (&mut MY_STRUCT).use_mut(); //~ WARN taking
-
- // Test that we don't warn when writing through
- // a raw pointer
- // This is U.B., but this test is check-pass,
- // so this never actually executes
- unsafe {
- *RAW_PTR = 0;
- *MY_STRUCT.raw_ptr = 0;
- }
-
- MUTABLE.msg = "wow"; // no warning, because Drop observes the mutation
- MUTABLE2.msg = "wow"; //~ WARN attempting to modify
- VEC.push(0); //~ WARN taking a mutable reference to a `const` item
-
- // Test that we don't warn when converting a raw pointer
- // into a mutable reference
- unsafe { &mut *PTR };
-
- // Test that we don't warn when there's a dereference involved.
- // If we ever 'leave' the const via a deference, we're going
- // to end up modifying something other than the temporary
- unsafe { (*PTR_TO_ARRAY)[0] = 1 };
- unsafe { *ARRAY_OF_PTR[0] = 25; }
-}