about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-07-18 05:58:16 +0000
committerbors <bors@rust-lang.org>2021-07-18 05:58:16 +0000
commit3ab6b60337edeb49339d173853fee1f8569421e0 (patch)
tree56d696f33ba36371e0eda73e4c29172bf7a01fd4 /src
parent77d155973c6c22a0e1af49a4a9bac024f697851d (diff)
parentb56079ec5466af5bff7d7d174ed6ae248aaa92c4 (diff)
downloadrust-3ab6b60337edeb49339d173853fee1f8569421e0.tar.gz
rust-3ab6b60337edeb49339d173853fee1f8569421e0.zip
Auto merge of #87071 - inquisitivecrystal:inclusive-range, r=estebank
Add diagnostics for mistyped inclusive range

Inclusive ranges are correctly typed as `..=`. However, it's quite easy to think of it as being like `==`, and type `..==` instead. This PR adds helpful diagnostics for this case.

Resolves #86395 (there are some other cases there, but I think those should probably have separate issues).

r? `@estebank`
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/parser/range-inclusive-extra-equals.rs10
-rw-r--r--src/test/ui/parser/range-inclusive-extra-equals.stderr10
2 files changed, 20 insertions, 0 deletions
diff --git a/src/test/ui/parser/range-inclusive-extra-equals.rs b/src/test/ui/parser/range-inclusive-extra-equals.rs
new file mode 100644
index 00000000000..d41c0699cf7
--- /dev/null
+++ b/src/test/ui/parser/range-inclusive-extra-equals.rs
@@ -0,0 +1,10 @@
+// Makes sure that a helpful message is shown when someone mistypes
+// an inclusive range as `..==` rather than `..=`. This is an
+// easy mistake, because of the resemblance to`==`.
+// See #86395 for a bit of background.
+
+pub fn main() {
+    if let 1..==3 = 1 {} //~ERROR unexpected `=` after inclusive range
+                      //~|HELP use `..=` instead
+                      //~|NOTE inclusive ranges end with a single equals sign
+}
diff --git a/src/test/ui/parser/range-inclusive-extra-equals.stderr b/src/test/ui/parser/range-inclusive-extra-equals.stderr
new file mode 100644
index 00000000000..d37b6be4fa1
--- /dev/null
+++ b/src/test/ui/parser/range-inclusive-extra-equals.stderr
@@ -0,0 +1,10 @@
+error: unexpected `=` after inclusive range
+  --> $DIR/range-inclusive-extra-equals.rs:7:13
+   |
+LL |     if let 1..==3 = 1 {}
+   |             ^^^^ help: use `..=` instead
+   |
+   = note: inclusive ranges end with a single equals sign (`..=`)
+
+error: aborting due to previous error
+