summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_error_codes/src/error_codes/E0317.md
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_error_codes/src/error_codes/E0317.md')
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0317.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes/E0317.md b/compiler/rustc_error_codes/src/error_codes/E0317.md
new file mode 100644
index 000000000..230911c20
--- /dev/null
+++ b/compiler/rustc_error_codes/src/error_codes/E0317.md
@@ -0,0 +1,30 @@
+An `if` expression is missing an `else` block.
+
+Erroneous code example:
+
+```compile_fail,E0317
+let x = 5;
+let a = if x == 5 {
+ 1
+};
+```
+
+This error occurs when an `if` expression without an `else` block is used in a
+context where a type other than `()` is expected. In the previous code example,
+the `let` expression was expecting a value but since there was no `else`, no
+value was returned.
+
+An `if` expression without an `else` block has the type `()`, so this is a type
+error. To resolve it, add an `else` block having the same type as the `if`
+block.
+
+So to fix the previous code example:
+
+```
+let x = 5;
+let a = if x == 5 {
+ 1
+} else {
+ 2
+};
+```