about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSteve Klabnik <steve@steveklabnik.com>2015-10-07 18:18:36 -0400
committerSteve Klabnik <steve@steveklabnik.com>2015-10-07 18:18:36 -0400
commit4b442963088865fa2aa79d26aa12e1e67007a2fb (patch)
tree1cdbfadf976c5780b68e398552ee64afee6b0fd8
parentf688c0e71153a4ee6ca936076cbad1bb08d3c52c (diff)
parenta94f684129dbf8cb4c87abe69ff45765cf24e501 (diff)
downloadrust-4b442963088865fa2aa79d26aa12e1e67007a2fb.tar.gz
rust-4b442963088865fa2aa79d26aa12e1e67007a2fb.zip
Rollup merge of #28874 - GuillaumeGomez:error_code, r=Manishearth
r? @Manishearth 
-rw-r--r--src/librustc_trans/diagnostics.rs15
-rw-r--r--src/librustc_trans/trans/consts.rs4
2 files changed, 17 insertions, 2 deletions
diff --git a/src/librustc_trans/diagnostics.rs b/src/librustc_trans/diagnostics.rs
index dd7c3834e56..05236a7a6fb 100644
--- a/src/librustc_trans/diagnostics.rs
+++ b/src/librustc_trans/diagnostics.rs
@@ -12,6 +12,21 @@
 
 register_long_diagnostics! {
 
+E0515: r##"
+A constant index expression was out of bounds. Erroneous code example:
+
+```
+let x = &[0, 1, 2][7]; // error: const index-expr is out of bounds
+```
+
+Please specify a valid index (not inferior to 0 or superior to array length).
+Example:
+
+```
+let x = &[0, 1, 2][2]; // ok!
+```
+"##,
+
 }
 
 register_diagnostics! {
diff --git a/src/librustc_trans/trans/consts.rs b/src/librustc_trans/trans/consts.rs
index 8e63f2788ed..0cae0ae59ba 100644
--- a/src/librustc_trans/trans/consts.rs
+++ b/src/librustc_trans/trans/consts.rs
@@ -628,8 +628,8 @@ fn const_expr_unadjusted<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>,
             if iv >= len {
                 // FIXME #3170: report this earlier on in the const-eval
                 // pass. Reporting here is a bit late.
-                cx.sess().span_err(e.span,
-                                   "const index-expr is out of bounds");
+                span_err!(cx.sess(), e.span, E0515,
+                          "const index-expr is out of bounds");
                 C_undef(val_ty(arr).element_type())
             } else {
                 const_get_elt(cx, arr, &[iv as c_uint])