about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2015-07-01 13:28:26 +0200
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2015-07-01 19:15:53 +0200
commit28d2b39f45298b16240455039358d2a4d304fd61 (patch)
tree60df935e81a19b72b51385925188698790cfbbc9
parentd2e6ddabc4bdc041d2545896cfe4a642a9569664 (diff)
downloadrust-28d2b39f45298b16240455039358d2a4d304fd61.tar.gz
rust-28d2b39f45298b16240455039358d2a4d304fd61.zip
Add E0277 error explanation
-rw-r--r--src/librustc/diagnostics.rs49
-rw-r--r--src/librustc_typeck/diagnostics.rs2
2 files changed, 49 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 e95145c3760..2c948a45f8c 100644
--- a/src/librustc_typeck/diagnostics.rs
+++ b/src/librustc_typeck/diagnostics.rs
@@ -1358,7 +1358,7 @@ struct Foo {
 }
 ```
 
-Please check you didn't mispelled one field. Example:
+Please verify that the field names have been correctly spelled. Example:
 
 ```
 struct Foo {