diff options
| author | bors <bors@rust-lang.org> | 2015-07-02 10:51:50 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-07-02 10:51:50 +0000 |
| commit | 99ca63fbd88a34ce8e2b93215d9155f551a8aaad (patch) | |
| tree | 31218a248fa0716156b509ccc58afae726477b75 | |
| parent | c4b4f0759297927248f2db0bed0a417e7f08ed1d (diff) | |
| parent | 28d2b39f45298b16240455039358d2a4d304fd61 (diff) | |
| download | rust-99ca63fbd88a34ce8e2b93215d9155f551a8aaad.tar.gz rust-99ca63fbd88a34ce8e2b93215d9155f551a8aaad.zip | |
Auto merge of #26712 - GuillaumeGomez:patch-2, r=Manishearth
Part of #24407. cc @michaelsproul r? @Manishearth
| -rw-r--r-- | src/librustc/diagnostics.rs | 49 | ||||
| -rw-r--r-- | src/librustc_typeck/diagnostics.rs | 22 |
2 files changed, 69 insertions, 2 deletions
diff --git a/src/librustc/diagnostics.rs b/src/librustc/diagnostics.rs index 68ca0eac37a..2eb26e760f9 100644 --- a/src/librustc/diagnostics.rs +++ b/src/librustc/diagnostics.rs @@ -749,6 +749,54 @@ for v in &vs { ``` "##, +E0277: r##" +You tried to use a type which doesn't implement some trait in a place which +expected that trait. Erroneous code example: + +``` +// here we declare the Foo trait with a bar method +trait Foo { + fn bar(&self); +} + +// we now declare a function which takes an object with Foo trait implemented +// as parameter +fn some_func<T: Foo>(foo: T) { + foo.bar(); +} + +fn main() { + // we now call the method with the i32 type, which doesn't implement + // the Foo trait + some_func(5i32); // error: the trait `Foo` is not implemented for the + // type `i32` +} +``` + +In order to fix this error, verify that the type you're using does implement +the trait. Example: + +``` +trait Foo { + fn bar(&self); +} + +fn some_func<T: Foo>(foo: T) { + foo.bar(); // we can now use this method since i32 implements the + // Foo trait +} + +// we implement the trait on the i32 type +impl Foo for i32 { + fn bar(&self) {} +} + +fn main() { + some_func(5i32); // ok! +} +``` +"##, + E0282: r##" This error indicates that type inference did not result in one unique possible type, and extra information is required. In most cases this can be provided @@ -1103,7 +1151,6 @@ register_diagnostics! { E0274, // rustc_on_unimplemented must have a value E0275, // overflow evaluating requirement E0276, // requirement appears on impl method but not on corresponding trait method - E0277, // trait is not implemented for type E0278, // requirement is not satisfied E0279, // requirement is not satisfied E0280, // requirement is not satisfied diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs index 05ddfe89bcf..2c948a45f8c 100644 --- a/src/librustc_typeck/diagnostics.rs +++ b/src/librustc_typeck/diagnostics.rs @@ -1347,6 +1347,27 @@ static BAR: _ = "test"; // error, explicitly write out the type instead ``` "##, +E0124: r##" +You declared two fields of a struct with the same name. Erroneous code +example: + +``` +struct Foo { + field1: i32, + field1: i32 // error: field is already declared +} +``` + +Please verify that the field names have been correctly spelled. Example: + +``` +struct Foo { + field1: i32, + field2: i32 // ok! +} +``` +"##, + E0131: r##" It is not possible to define `main` with type parameters, or even with function parameters. When `main` is present, it must take no arguments and return `()`. @@ -1956,7 +1977,6 @@ register_diagnostics! { E0120, E0122, E0123, - E0124, E0127, E0128, E0129, |
