|  | // Unused `pub` fields in non-`pub` structs should also trigger dead code warnings. | 
|  | //@ check-pass | 
|  |  | 
|  | #![warn(dead_code)] | 
|  |  | 
|  | struct Foo { | 
|  | a: i32, //~ WARNING: fields `a` and `b` are never read | 
|  | pub b: i32, | 
|  | } | 
|  |  | 
|  | struct Bar; | 
|  |  | 
|  | impl Bar { | 
|  | fn a(&self) -> i32 { 5 } //~ WARNING: methods `a` and `b` are never used [dead_code] | 
|  | pub fn b(&self) -> i32 { 6 } | 
|  | } | 
|  |  | 
|  | pub(crate) struct Foo1 { | 
|  | a: i32, //~ WARNING: fields `a` and `b` are never read | 
|  | pub b: i32, | 
|  | } | 
|  |  | 
|  | pub(crate) struct Bar1; | 
|  |  | 
|  | impl Bar1 { | 
|  | fn a(&self) -> i32 { 5 } //~ WARNING: methods `a` and `b` are never used [dead_code] | 
|  | pub fn b(&self) -> i32 { 6 } | 
|  | } | 
|  |  | 
|  | pub(crate) struct Foo2 { | 
|  | a: i32, //~ WARNING: fields `a` and `b` are never read | 
|  | pub b: i32, | 
|  | } | 
|  |  | 
|  | pub(crate) struct Bar2; | 
|  |  | 
|  | impl Bar2 { | 
|  | fn a(&self) -> i32 { 5 } //~ WARNING: methods `a` and `b` are never used [dead_code] | 
|  | pub fn b(&self) -> i32 { 6 } | 
|  | } | 
|  |  | 
|  |  | 
|  | fn main() { | 
|  | let _ = Foo { a: 1, b: 2 }; | 
|  | let _ = Bar; | 
|  | let _ = Foo1 { a: 1, b: 2 }; | 
|  | let _ = Bar1; | 
|  | let _ = Foo2 { a: 1, b: 2 }; | 
|  | let _ = Bar2; | 
|  | } |