about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libsyntax/feature_gate.rs8
-rw-r--r--src/libsyntax/parse/mod.rs15
-rw-r--r--src/test/compile-fail/feature-gate-int-uint.rs14
3 files changed, 16 insertions, 21 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs
index 3bebba15a57..0110823ae98 100644
--- a/src/libsyntax/feature_gate.rs
+++ b/src/libsyntax/feature_gate.rs
@@ -588,11 +588,11 @@ impl<'a, 'v> Visitor<'v> for PostExpansionVisitor<'a> {
                 match lit.node {
                     ast::LitInt(_, ty) => {
                         let msg = if let ast::SignedIntLit(ast::TyIs(true), _) = ty {
-                            Some("the `i` suffix on integers is deprecated; use `is` \
-                                  or one of the fixed-sized suffixes")
+                            Some("the `i` and `is` suffixes on integers are deprecated; \
+                                  use `isize` or one of the fixed-sized suffixes")
                         } else if let ast::UnsignedIntLit(ast::TyUs(true)) = ty {
-                            Some("the `u` suffix on integers is deprecated; use `us` \
-                                 or one of the fixed-sized suffixes")
+                            Some("the `u` and `us` suffixes on integers are deprecated; \
+                                  use `usize` or one of the fixed-sized suffixes")
                         } else {
                             None
                         };
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs
index e3bed496647..6ea23cf3f04 100644
--- a/src/libsyntax/parse/mod.rs
+++ b/src/libsyntax/parse/mod.rs
@@ -711,6 +711,8 @@ pub fn integer_lit(s: &str, suffix: Option<&str>, sd: &SpanHandler, sp: Span) ->
             "u16" => ast::UnsignedIntLit(ast::TyU16),
             "u32" => ast::UnsignedIntLit(ast::TyU32),
             "u64" => ast::UnsignedIntLit(ast::TyU64),
+            "i" | "is" => ast::SignedIntLit(ast::TyIs(true), ast::Plus),
+            "u" | "us" => ast::UnsignedIntLit(ast::TyUs(true)),
             _ => {
                 // i<digits> and u<digits> look like widths, so lets
                 // give an error message along those lines
@@ -720,17 +722,8 @@ pub fn integer_lit(s: &str, suffix: Option<&str>, sd: &SpanHandler, sp: Span) ->
                                               &suf[1..]));
                 } else {
                     sd.span_err(sp, &*format!("illegal suffix `{}` for numeric literal", suf));
-
-                    if suf == "i" || suf == "is" {
-                        sd.span_help(sp, "per RFC 544/573, the suffix \
-                                          for `isize` literals is now `isize`");
-                    } else if suf == "u" || suf == "us" {
-                        sd.span_help(sp, "per RFC 544/573, the suffix \
-                                          for `usize` literals is now `usize`");
-                    } else {
-                        sd.span_help(sp, "the suffix must be one of the integral types \
-                                          (`u32`, `isize`, etc)");
-                    }
+                    sd.span_help(sp, "the suffix must be one of the integral types \
+                                      (`u32`, `isize`, etc)");
                 }
 
                 ty
diff --git a/src/test/compile-fail/feature-gate-int-uint.rs b/src/test/compile-fail/feature-gate-int-uint.rs
index 344afa34799..948e485ccf5 100644
--- a/src/test/compile-fail/feature-gate-int-uint.rs
+++ b/src/test/compile-fail/feature-gate-int-uint.rs
@@ -8,7 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![allow(dead_code)]
+#![allow(dead_code, unused_variables)]
+#![feature(rustc_attrs)]
 
 mod u {
     type X = uint; //~ WARN the `uint` type is deprecated
@@ -16,7 +17,8 @@ mod u {
         x: uint //~ WARN the `uint` type is deprecated
     }
     fn bar(x: uint) { //~ WARN the `uint` type is deprecated
-        1_usize;
+        1_u; //~ WARN the `u` and `us` suffixes on integers are deprecated
+        1_us; //~ WARN the `u` and `us` suffixes on integers are deprecated
     }
 }
 mod i {
@@ -25,11 +27,11 @@ mod i {
         x: int //~ WARN the `int` type is deprecated
     }
     fn bar(x: int) { //~ WARN the `int` type is deprecated
-        1_isize;
+        1_i; //~ WARN the `i` and `is` suffixes on integers are deprecated
+        1_is; //~ WARN the `i` and `is` suffixes on integers are deprecated
     }
 }
 
-fn main() {
-    // make compilation fail, after feature gating
-    let () = 1u8; //~ ERROR
+#[rustc_error]
+fn main() { //~ ERROR compilation successful
 }