]> git.lizzy.rs Git - rust.git/commitdiff
Convert negate_unsigned feature gate to a warning
authorSimonas Kazlauskas <git@kazlauskas.me>
Mon, 20 Jul 2015 09:17:55 +0000 (12:17 +0300)
committerSimonas Kazlauskas <git@kazlauskas.me>
Mon, 20 Jul 2015 09:24:16 +0000 (12:24 +0300)
src/librustc_lint/builtin.rs
src/test/compile-fail/feature-gate-negate-unsigned.rs [deleted file]
src/test/run-pass/feature-gate-negate-unsigned.rs [new file with mode: 0644]

index d158307478788c9c42041786209d3a95e57967d4..e82e0d790e1bb7d2d85139b79f95dc8b02bb74b0 100644 (file)
@@ -53,7 +53,7 @@
 use syntax::ast_util::{self, is_shift_binop, local_def};
 use syntax::attr::{self, AttrMetaMethods};
 use syntax::codemap::{self, Span};
-use syntax::feature_gate::{KNOWN_ATTRIBUTES, AttributeType, emit_feature_err};
+use syntax::feature_gate::{KNOWN_ATTRIBUTES, AttributeType};
 use syntax::parse::token;
 use syntax::ast::{TyIs, TyUs, TyI8, TyU8, TyI16, TyU16, TyI32, TyU32, TyI64, TyU64};
 use syntax::ptr::P;
@@ -382,11 +382,13 @@ fn is_comparison(binop: ast::BinOp) -> bool {
 
         fn check_unsigned_negation_feature(cx: &Context, span: Span) {
             if !cx.sess().features.borrow().negate_unsigned {
-                emit_feature_err(
-                    &cx.sess().parse_sess.span_diagnostic,
-                    "negate_unsigned",
-                    span,
-                    "unary negation of unsigned integers may be removed in the future");
+                // FIXME(#27141): change this to syntax::feature_gate::emit_feature_err…
+                cx.sess().span_warn(span,
+                    "unary negation of unsigned integers will be feature gated in the future");
+                // …and remove following two expressions.
+                if option_env!("CFG_DISABLE_UNSTABLE_FEATURES").is_some() { return; }
+                cx.sess().fileline_help(span, "add #![feature(negate_unsigned)] to the \
+                                               crate attributes to enable the gate in advance");
             }
         }
     }
diff --git a/src/test/compile-fail/feature-gate-negate-unsigned.rs b/src/test/compile-fail/feature-gate-negate-unsigned.rs
deleted file mode 100644 (file)
index b1c73fa..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// Test that negating unsigned integers is gated by `negate_unsigned` feature
-// gate
-
-struct S;
-impl std::ops::Neg for S {
-    type Output = u32;
-    fn neg(self) -> u32 { 0 }
-}
-
-const _MAX: usize = -1;
-//~^ ERROR unary negation of unsigned integers may be removed in the future
-
-fn main() {
-    let a = -1;
-    //~^ ERROR unary negation of unsigned integers may be removed in the future
-    let _b : u8 = a; // for infering variable a to u8.
-
-    -a;
-    //~^ ERROR unary negation of unsigned integers may be removed in the future
-
-    let _d = -1u8;
-    //~^ ERROR unary negation of unsigned integers may be removed in the future
-
-    for _ in -10..10u8 {}
-    //~^ ERROR unary negation of unsigned integers may be removed in the future
-
-    -S; // should not trigger the gate; issue 26840
-}
diff --git a/src/test/run-pass/feature-gate-negate-unsigned.rs b/src/test/run-pass/feature-gate-negate-unsigned.rs
new file mode 100644 (file)
index 0000000..95c8e62
--- /dev/null
@@ -0,0 +1,38 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Test that negating unsigned integers is gated by `negate_unsigned` feature
+// gate
+
+struct S;
+impl std::ops::Neg for S {
+    type Output = u32;
+    fn neg(self) -> u32 { 0 }
+}
+
+const _MAX: usize = -1;
+//~^ WARN unary negation of unsigned integers will be feature gated in the future
+
+fn main() {
+    let a = -1;
+    //~^ WARN unary negation of unsigned integers will be feature gated in the future
+    let _b : u8 = a; // for infering variable a to u8.
+
+    -a;
+    //~^ WARN unary negation of unsigned integers will be feature gated in the future
+
+    let _d = -1u8;
+    //~^ WARN unary negation of unsigned integers will be feature gated in the future
+
+    for _ in -10..10u8 {}
+    //~^ WARN unary negation of unsigned integers will be feature gated in the future
+
+    -S; // should not trigger the gate; issue 26840
+}