mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	* Account for `struct S(pub(super)Ty);` in suggestion * Suggest changing field visibility in E0603 too
		
			
				
	
	
		
			156 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
error[E0423]: expected value, found struct `Z`
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:20:9
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |     ----------------- similarly named tuple struct `S` defined here
 | 
						|
...
 | 
						|
LL |         Z;
 | 
						|
   |         ^
 | 
						|
   |         |
 | 
						|
   |         constructor is not visible here due to private fields
 | 
						|
   |         help: a tuple struct with a similar name exists: `S`
 | 
						|
 | 
						|
error[E0423]: expected value, found struct `S`
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:33:5
 | 
						|
   |
 | 
						|
LL |     S;
 | 
						|
   |     ^ constructor is not visible here due to private fields
 | 
						|
 | 
						|
error[E0423]: expected value, found struct `S2`
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:38:5
 | 
						|
   |
 | 
						|
LL | /     pub struct S2 {
 | 
						|
LL | |         s: u8
 | 
						|
LL | |     }
 | 
						|
   | |_____- `S2` defined here
 | 
						|
...
 | 
						|
LL |       S2;
 | 
						|
   |       ^^ help: use struct literal syntax instead: `S2 { s: val }`
 | 
						|
 | 
						|
error[E0423]: expected value, found struct `xcrate::S`
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:43:5
 | 
						|
   |
 | 
						|
LL |     xcrate::S;
 | 
						|
   |     ^^^^^^^^^ constructor is not visible here due to private fields
 | 
						|
   |
 | 
						|
note: tuple struct `m::S` exists but is inaccessible
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:6:5
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |     ^^^^^^^^^^^^^^^^^ not accessible
 | 
						|
 | 
						|
error[E0603]: tuple struct constructor `Z` is private
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:18:12
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub(in m::n) u8);
 | 
						|
   |                            --------------- a constructor is private if any of the fields is private
 | 
						|
...
 | 
						|
LL |         n::Z;
 | 
						|
   |            ^ private tuple struct constructor
 | 
						|
   |
 | 
						|
note: the tuple struct constructor `Z` is defined here
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:12:9
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub(in m::n) u8);
 | 
						|
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
help: consider making the field publicly accessible
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub u8);
 | 
						|
   |                            ~~~
 | 
						|
 | 
						|
error[E0603]: tuple struct constructor `S` is private
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:29:8
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |                  -- a constructor is private if any of the fields is private
 | 
						|
...
 | 
						|
LL |     m::S;
 | 
						|
   |        ^ private tuple struct constructor
 | 
						|
   |
 | 
						|
note: the tuple struct constructor `S` is defined here
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:6:5
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |     ^^^^^^^^^^^^^^^^^
 | 
						|
help: consider making the field publicly accessible
 | 
						|
   |
 | 
						|
LL |     pub struct S(pub u8);
 | 
						|
   |                  +++
 | 
						|
 | 
						|
error[E0603]: tuple struct constructor `S` is private
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:31:19
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |                  -- a constructor is private if any of the fields is private
 | 
						|
...
 | 
						|
LL |     let _: S = m::S(2);
 | 
						|
   |                   ^ private tuple struct constructor
 | 
						|
   |
 | 
						|
note: the tuple struct constructor `S` is defined here
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:6:5
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |     ^^^^^^^^^^^^^^^^^
 | 
						|
help: consider making the field publicly accessible
 | 
						|
   |
 | 
						|
LL |     pub struct S(pub u8);
 | 
						|
   |                  +++
 | 
						|
 | 
						|
error[E0603]: tuple struct constructor `Z` is private
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:35:11
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub(in m::n) u8);
 | 
						|
   |                            --------------- a constructor is private if any of the fields is private
 | 
						|
...
 | 
						|
LL |     m::n::Z;
 | 
						|
   |           ^ private tuple struct constructor
 | 
						|
   |
 | 
						|
note: the tuple struct constructor `Z` is defined here
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:12:9
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub(in m::n) u8);
 | 
						|
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
help: consider making the field publicly accessible
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub u8);
 | 
						|
   |                            ~~~
 | 
						|
 | 
						|
error[E0603]: tuple struct constructor `S` is private
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:41:16
 | 
						|
   |
 | 
						|
LL |     xcrate::m::S;
 | 
						|
   |                ^ private tuple struct constructor
 | 
						|
   |
 | 
						|
  ::: $DIR/auxiliary/privacy-struct-ctor.rs:2:18
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |                  -- a constructor is private if any of the fields is private
 | 
						|
   |
 | 
						|
note: the tuple struct constructor `S` is defined here
 | 
						|
  --> $DIR/auxiliary/privacy-struct-ctor.rs:2:5
 | 
						|
   |
 | 
						|
LL |     pub struct S(u8);
 | 
						|
   |     ^^^^^^^^^^^^
 | 
						|
 | 
						|
error[E0603]: tuple struct constructor `Z` is private
 | 
						|
  --> $DIR/privacy-struct-ctor.rs:45:19
 | 
						|
   |
 | 
						|
LL |     xcrate::m::n::Z;
 | 
						|
   |                   ^ private tuple struct constructor
 | 
						|
   |
 | 
						|
  ::: $DIR/auxiliary/privacy-struct-ctor.rs:5:28
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub(in m::n) u8);
 | 
						|
   |                            --------------- a constructor is private if any of the fields is private
 | 
						|
   |
 | 
						|
note: the tuple struct constructor `Z` is defined here
 | 
						|
  --> $DIR/auxiliary/privacy-struct-ctor.rs:5:9
 | 
						|
   |
 | 
						|
LL |         pub(in m) struct Z(pub(in m::n) u8);
 | 
						|
   |         ^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
error: aborting due to 10 previous errors
 | 
						|
 | 
						|
Some errors have detailed explanations: E0423, E0603.
 | 
						|
For more information about an error, try `rustc --explain E0423`.
 |