Auto merge of #87369 - pnkfelix:beta-targetted-revert-81473-warn-write-only-fields, r=Mark-Simulacrum
Beta targetted revert 81473 warn write only fields
beta backport of PR #86212
diff --git a/compiler/rustc_passes/src/dead.rs b/compiler/rustc_passes/src/dead.rs
index bef56bb..c1b6da9 100644
--- a/compiler/rustc_passes/src/dead.rs
+++ b/compiler/rustc_passes/src/dead.rs
@@ -134,6 +134,7 @@ fn handle_field_access(&mut self, lhs: &hir::Expr<'_>, hir_id: hir::HirId) {
}
}
+ #[allow(dead_code)] // FIXME(81658): should be used + lint reinstated after #83171 relands.
fn handle_assign(&mut self, expr: &'tcx hir::Expr<'tcx>) {
if self
.typeck_results()
@@ -285,11 +286,6 @@ fn visit_expr(&mut self, expr: &'tcx hir::Expr<'tcx>) {
hir::ExprKind::MethodCall(..) => {
self.lookup_and_handle_method(expr.hir_id);
}
- hir::ExprKind::Assign(ref left, ref right, ..) => {
- self.handle_assign(left);
- self.visit_expr(right);
- return;
- }
hir::ExprKind::Field(ref lhs, ..) => {
self.handle_field_access(&lhs, expr.hir_id);
}
diff --git a/src/test/ui/borrowck/borrowck-assign-to-subfield.rs b/src/test/ui/borrowck/borrowck-assign-to-subfield.rs
index dfa3a56..050d702 100644
--- a/src/test/ui/borrowck/borrowck-assign-to-subfield.rs
+++ b/src/test/ui/borrowck/borrowck-assign-to-subfield.rs
@@ -1,6 +1,5 @@
// run-pass
// pretty-expanded FIXME #23616
-#![allow(dead_code)]
pub fn main() {
struct A {
diff --git a/src/test/ui/lint/dead-code/write-only-field.rs b/src/test/ui/lint/dead-code/write-only-field.rs
deleted file mode 100644
index 7b3f1e9..0000000
--- a/src/test/ui/lint/dead-code/write-only-field.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-#![deny(dead_code)]
-
-struct S {
- f: i32, //~ ERROR: field is never read
- sub: Sub, //~ ERROR: field is never read
-}
-
-struct Sub {
- f: i32, //~ ERROR: field is never read
-}
-
-fn field_write(s: &mut S) {
- s.f = 1;
- s.sub.f = 2;
-}
-
-fn main() {
- let mut s = S { f: 0, sub: Sub { f: 0 } };
- field_write(&mut s);
-
- auto_deref();
- nested_boxes();
-}
-
-fn auto_deref() {
- struct E {
- x: bool,
- y: bool, //~ ERROR: field is never read
- }
-
- struct P<'a> {
- e: &'a mut E
- }
-
- impl P<'_> {
- fn f(&mut self) {
- self.e.x = true;
- self.e.y = true;
- }
- }
-
- let mut e = E { x: false, y: false };
- let mut p = P { e: &mut e };
- p.f();
- assert!(e.x);
-}
-
-fn nested_boxes() {
- struct A {
- b: Box<B>,
- }
-
- struct B {
- c: Box<C>,
- }
-
- struct C {
- u: u32, //~ ERROR: field is never read
- v: u32, //~ ERROR: field is never read
- }
-
- let mut a = A {
- b: Box::new(B {
- c: Box::new(C { u: 0, v: 0 }),
- }),
- };
- a.b.c.v = 10;
- a.b.c = Box::new(C { u: 1, v: 2 });
-}
diff --git a/src/test/ui/lint/dead-code/write-only-field.stderr b/src/test/ui/lint/dead-code/write-only-field.stderr
deleted file mode 100644
index a191d22..0000000
--- a/src/test/ui/lint/dead-code/write-only-field.stderr
+++ /dev/null
@@ -1,44 +0,0 @@
-error: field is never read: `f`
- --> $DIR/write-only-field.rs:4:5
- |
-LL | f: i32,
- | ^^^^^^
- |
-note: the lint level is defined here
- --> $DIR/write-only-field.rs:1:9
- |
-LL | #![deny(dead_code)]
- | ^^^^^^^^^
-
-error: field is never read: `sub`
- --> $DIR/write-only-field.rs:5:5
- |
-LL | sub: Sub,
- | ^^^^^^^^
-
-error: field is never read: `f`
- --> $DIR/write-only-field.rs:9:5
- |
-LL | f: i32,
- | ^^^^^^
-
-error: field is never read: `y`
- --> $DIR/write-only-field.rs:28:9
- |
-LL | y: bool,
- | ^^^^^^^
-
-error: field is never read: `u`
- --> $DIR/write-only-field.rs:58:9
- |
-LL | u: u32,
- | ^^^^^^
-
-error: field is never read: `v`
- --> $DIR/write-only-field.rs:59:9
- |
-LL | v: u32,
- | ^^^^^^
-
-error: aborting due to 6 previous errors
-