about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2016-05-25 13:40:35 +0200
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2016-05-25 13:40:35 +0200
commitdfa0d2c46e4448fe117d26a9c7fff2b68a2f304f (patch)
treea28153e3160d5b27056cd99e9c6c17e6093dcabd
parent487de4208346968b17be53bd5f423156a2b6c065 (diff)
downloadrust-dfa0d2c46e4448fe117d26a9c7fff2b68a2f304f.tar.gz
rust-dfa0d2c46e4448fe117d26a9c7fff2b68a2f304f.zip
Improve E0084 error explanation
-rw-r--r--src/librustc_typeck/diagnostics.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs
index 40b9b0e01ab..b94c9c4ad19 100644
--- a/src/librustc_typeck/diagnostics.rs
+++ b/src/librustc_typeck/diagnostics.rs
@@ -1193,12 +1193,32 @@ discriminant values so that they fit within the existing type.
 "##,
 
 E0084: r##"
+An unsupported representation was attempted on a zero-variant enum.
+
+Erroneous code example:
+
+```compile_fail
+#[repr(i32)]
+enum NightWatch {} // error: unsupported representation for zero-variant enum
+```
+
 It is impossible to define an integer type to be used to represent zero-variant
 enum values because there are no zero-variant enum values. There is no way to
-construct an instance of the following type using only safe code:
+construct an instance of the following type using only safe code. So you have
+two solutions. Either you add variants in your enum:
+
+```
+#[repr(i32)]
+enum NightWatch {
+    JohnSnow,
+    Commander,
+}
+```
+
+or you remove the integer represention of your enum:
 
 ```
-enum Empty {}
+enum NightWatch {}
 ```
 "##,