]> git.lizzy.rs Git - rust.git/commitdiff
Suggest array indexing when tuple indexing on an array.
authormemoryruins <memoryruinsmusic@gmail.com>
Mon, 17 Sep 2018 13:09:45 +0000 (09:09 -0400)
committermemoryruins <memoryruinsmusic@gmail.com>
Mon, 17 Sep 2018 13:09:45 +0000 (09:09 -0400)
src/librustc_typeck/check/mod.rs
src/test/ui/issues/issue-53712.rs [new file with mode: 0644]
src/test/ui/issues/issue-53712.stderr [new file with mode: 0644]

index aa27fe528e1fd19d01542efd73fa8cab098817b2..89ab085b03481870fecc0c0b6ee5dea74e5eb1dd 100644 (file)
@@ -3344,6 +3344,12 @@ fn check_field(&self,
                                 }
                             };
                     }
+                    ty::Array(ty, _) if ty.is_numeric() => {
+                        let base = self.tcx.hir.node_to_pretty_string(base.id);
+                        let msg = format!("attempting to use tuple indexing on an array; try");
+                        let suggestion = format!("{}[{}]", base, field);
+                        err.span_suggestion(field.span, &msg, suggestion);
+                    },
                     ty::RawPtr(..) => {
                         let base = self.tcx.hir.node_to_pretty_string(base.id);
                         let msg = format!("`{}` is a native pointer; try dereferencing it", base);
diff --git a/src/test/ui/issues/issue-53712.rs b/src/test/ui/issues/issue-53712.rs
new file mode 100644 (file)
index 0000000..c8b54c2
--- /dev/null
@@ -0,0 +1,9 @@
+// issue #53712: make the error generated by using tuple indexing on an array more specific
+
+fn main() {
+    let arr = [10, 20, 30, 40, 50];
+    arr.0;
+    //~^ ERROR no field `0` on type `[{integer}; 5]` [E0609]
+    //~| HELP attempting to use tuple indexing on an array; try
+    //~| SUGGESTION arr[0]
+}
diff --git a/src/test/ui/issues/issue-53712.stderr b/src/test/ui/issues/issue-53712.stderr
new file mode 100644 (file)
index 0000000..ef885a4
--- /dev/null
@@ -0,0 +1,9 @@
+error[E0609]: no field `0` on type `[{integer}; 5]`
+  --> $DIR/issue-53712.rs:5:9
+   |
+LL |     arr.0;
+   |         ^ help: attempting to use tuple indexing on an array; try: `arr[0]`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0609`.