about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlisdair Owens <awo101@zepler.net>2015-08-14 21:33:40 +0100
committerAlisdair Owens <awo101@zepler.net>2015-08-15 10:02:54 +0100
commit26cca1c258a8946bfcd6d900077642d5f2be708c (patch)
treef65143ac070bfd3c79c0bbed1d418256e75b38b0
parente859498d1ca45f2719542f505eb0ba8b944e5668 (diff)
downloadrust-26cca1c258a8946bfcd6d900077642d5f2be708c.tar.gz
rust-26cca1c258a8946bfcd6d900077642d5f2be708c.zip
Add extended diagnostics for E0248
-rw-r--r--src/librustc_typeck/diagnostics.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs
index c24c9e9a255..62804426df6 100644
--- a/src/librustc_typeck/diagnostics.rs
+++ b/src/librustc_typeck/diagnostics.rs
@@ -2365,6 +2365,25 @@ struct Bar<S, T> { x: Foo<S, T> }
 ```
 "##,
 
+E0248: r##"
+This error indicates an attempt to use a value where a type is expected. For
+example:
+
+```
+enum Foo {
+    Bar(u32)
+}
+
+fn do_something(x: Foo::Bar) { }
+```
+
+In this example, we're attempting to take a type of `Foo::Bar` in the
+do_something function. This is not legal: `Foo::Bar` is a value of type `Foo`,
+not a distinct static type. Likewise, it's not legal to attempt to
+`impl Foo::Bar`: instead, you must `impl Foo` and then pattern match to specify
+behaviour for specific enum variants.
+"##,
+
 E0249: r##"
 This error indicates a constant expression for the array length was found, but
 it was not an integer (signed or unsigned) expression.
@@ -2756,7 +2775,6 @@ register_diagnostics! {
     E0245, // not a trait
     E0246, // invalid recursive type
     E0247, // found module name used as a type
-    E0248, // found value name used as a type
     E0319, // trait impls for defaulted traits allowed just for structs/enums
     E0320, // recursive overflow during dropck
     E0321, // extended coherence rules for defaulted traits violated