]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_mir/src/dataflow/move_paths/builder.rs
Use PlaceRef more consistently in rustc_mir
[rust.git] / compiler / rustc_mir / src / dataflow / move_paths / builder.rs
index ab7fadac91e39f892fa5abbd15dd9ae8e784ec3a..ee78ff00c9b2baa022045ee9a5db2483bbe7fac9 100644 (file)
@@ -518,14 +518,10 @@ fn gather_init(&mut self, place: PlaceRef<'tcx>, kind: InitKind) {
 
         // Check if we are assigning into a field of a union, if so, lookup the place
         // of the union so it is marked as initialized again.
-        if let [proj_base @ .., ProjectionElem::Field(_, _)] = place.projection {
-            if let ty::Adt(def, _) =
-                Place::ty_from(place.local, proj_base, self.builder.body, self.builder.tcx)
-                    .ty
-                    .kind()
-            {
+        if let Some((place_base, ProjectionElem::Field(_, _))) = place.last_projection() {
+            if let ty::Adt(def, _) = place_base.ty(self.builder.body, self.builder.tcx).ty.kind() {
                 if def.is_union() {
-                    place = PlaceRef { local: place.local, projection: proj_base }
+                    place = place_base;
                 }
             }
         }