X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_privacy%2Fdiagnostics.rs;h=1b49409970ded6549c6abcf45bfa64b26deea627;hb=bcda58f49133921abd091d7f800732fe2c4e5a98;hp=3fbe3bc200534ac4a93173652b28a653af81221f;hpb=3f56b29715dd25bb92a18db5de459fa66795734f;p=rust.git diff --git a/src/librustc_privacy/diagnostics.rs b/src/librustc_privacy/diagnostics.rs index 3fbe3bc2005..1b49409970d 100644 --- a/src/librustc_privacy/diagnostics.rs +++ b/src/librustc_privacy/diagnostics.rs @@ -16,28 +16,27 @@ A private trait was used on a public type parameter bound. Erroneous code examples: -``` +```compile_fail trait Foo { fn dummy(&self) { } } pub trait Bar : Foo {} // error: private trait in public interface -pub struct Bar(pub T); // same error +pub struct Bar2(pub T); // same error pub fn foo (t: T) {} // same error ``` To solve this error, please ensure that the trait is also public. The trait -can be made inaccessible if necessary by placing it into a private inner module, -but it still has to be marked with `pub`. -Example: +can be made inaccessible if necessary by placing it into a private inner +module, but it still has to be marked with `pub`. Example: -``` +```ignore pub trait Foo { // we set the Foo trait public fn dummy(&self) { } } pub trait Bar : Foo {} // ok! -pub struct Bar(pub T); // ok! +pub struct Bar2(pub T); // ok! pub fn foo (t: T) {} // ok! ``` "##, @@ -45,7 +44,7 @@ pub fn foo (t: T) {} // ok! E0446: r##" A private type was used in a public type signature. Erroneous code example: -``` +```compile_fail mod Foo { struct Bar(u32); @@ -56,8 +55,8 @@ pub fn bar() -> Bar { // error: private type in public interface ``` To solve this error, please ensure that the type is also public. The type -can be made inaccessible if necessary by placing it into a private inner module, -but it still has to be marked with `pub`. +can be made inaccessible if necessary by placing it into a private inner +module, but it still has to be marked with `pub`. Example: ``` @@ -74,7 +73,7 @@ pub fn bar() -> Bar { // ok! E0447: r##" The `pub` keyword was used inside a function. Erroneous code example: -``` +```compile_fail fn foo() { pub struct Bar; // error: visibility has no effect inside functions } @@ -88,7 +87,7 @@ fn foo() { E0448: r##" The `pub` keyword was used inside a public enum. Erroneous code example: -``` +```compile_fail pub enum Foo { pub Bar, // error: unnecessary `pub` visibility } @@ -97,13 +96,15 @@ pub enum Foo { Since the enum is already public, adding `pub` on one its elements is unnecessary. Example: -``` +```compile_fail enum Foo { - pub Bar, // ok! + pub Bar, // not ok! } +``` -// or: +This is the correct syntax: +```ignore pub enum Foo { Bar, // ok! } @@ -114,7 +115,7 @@ pub enum Foo { A visibility qualifier was used when it was unnecessary. Erroneous code examples: -``` +```compile_fail struct Bar; trait Foo { @@ -131,7 +132,7 @@ pub fn foo() {} // error: unnecessary visibility qualifier To fix this error, please remove the visibility qualifier when it is not required. Example: -``` +```ignore struct Bar; trait Foo { @@ -154,7 +155,7 @@ pub fn foo() {} A tuple constructor was invoked while some of its fields are private. Erroneous code example: -``` +```compile_fail mod Bar { pub struct Foo(isize); } @@ -164,7 +165,7 @@ mod Bar { ``` To solve this issue, please ensure that all of the fields of the tuple struct -are public. Alternatively, provide a new() method to the tuple struct to +are public. Alternatively, provide a `new()` method to the tuple struct to construct it from a given inner value. Example: ``` @@ -179,7 +180,7 @@ mod bar { pub struct Foo(isize); impl Foo { - pub fn new(x: isize) { + pub fn new(x: isize) -> Foo { Foo(x) } } @@ -192,7 +193,7 @@ pub fn new(x: isize) { E0451: r##" A struct constructor with private fields was invoked. Erroneous code example: -``` +```compile_fail mod Bar { pub struct Foo { pub a: isize, @@ -204,8 +205,8 @@ pub struct Foo { // is private ``` -To fix this error, please ensure that all the fields of the struct, or -implement a function for easy instantiation. Examples: +To fix this error, please ensure that all the fields of the struct are public, +or implement a function for easy instantiation. Examples: ``` mod Bar { @@ -216,8 +217,11 @@ pub struct Foo { } let f = Bar::Foo{ a: 0, b: 0 }; // ok! +``` -// or: +Or: + +``` mod Bar { pub struct Foo { pub a: isize,