]> git.lizzy.rs Git - rust.git/blobdiff - tests/ui/temporary_assignment.rs
Auto merge of #4478 - tsurai:master, r=flip1995
[rust.git] / tests / ui / temporary_assignment.rs
index 79c090f05722a4b70447392d5f5722c4e5d193f6..c6c315d5fab5d359aa7378719722fdb9a8ead38c 100644 (file)
@@ -1,20 +1,17 @@
-// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution.
-//
-// 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.
-
 #![warn(clippy::temporary_assignment)]
 
 use std::ops::{Deref, DerefMut};
 
+struct TupleStruct(i32);
+
 struct Struct {
     field: i32,
 }
 
+struct MultiStruct {
+    structure: Struct,
+}
+
 struct Wrapper<'a> {
     inner: &'a mut Struct,
 }
@@ -32,15 +29,47 @@ fn deref_mut(&mut self) -> &mut Struct {
     }
 }
 
+struct ArrayStruct {
+    array: [i32; 1],
+}
+
+const A: TupleStruct = TupleStruct(1);
+const B: Struct = Struct { field: 1 };
+const C: MultiStruct = MultiStruct {
+    structure: Struct { field: 1 },
+};
+const D: ArrayStruct = ArrayStruct { array: [1] };
+
 fn main() {
     let mut s = Struct { field: 0 };
     let mut t = (0, 0);
 
     Struct { field: 0 }.field = 1;
+    MultiStruct {
+        structure: Struct { field: 0 },
+    }
+    .structure
+    .field = 1;
+    ArrayStruct { array: [0] }.array[0] = 1;
     (0, 0).0 = 1;
 
+    A.0 = 2;
+    B.field = 2;
+    C.structure.field = 2;
+    D.array[0] = 2;
+
     // no error
     s.field = 1;
     t.0 = 1;
     Wrapper { inner: &mut s }.field = 1;
+    let mut a_mut = TupleStruct(1);
+    a_mut.0 = 2;
+    let mut b_mut = Struct { field: 1 };
+    b_mut.field = 2;
+    let mut c_mut = MultiStruct {
+        structure: Struct { field: 1 },
+    };
+    c_mut.structure.field = 2;
+    let mut d_mut = ArrayStruct { array: [1] };
+    d_mut.array[0] = 2;
 }