]> git.lizzy.rs Git - rust.git/commitdiff
fallout when bootstrapping `rustc`.
authorFelix S. Klock II <pnkfelix@pnkfx.org>
Wed, 1 Apr 2015 17:53:32 +0000 (19:53 +0200)
committerFelix S. Klock II <pnkfelix@pnkfx.org>
Wed, 1 Apr 2015 20:35:50 +0000 (22:35 +0200)
src/librustc/middle/const_eval.rs
src/librustc_lint/builtin.rs
src/librustc_trans/trans/adt.rs
src/librustc_trans/trans/base.rs
src/librustc_trans/trans/context.rs
src/libsyntax/ast.rs
src/libsyntax/codemap.rs

index e3e5efc53c7decdca8253aab72db0ada53beea16..214ea163232e7d1bee7495fa5eac261cc34f9876 100644 (file)
@@ -23,6 +23,7 @@
 
 use syntax::ast::{self, Expr};
 use syntax::codemap::Span;
+use syntax::feature_gate;
 use syntax::parse::token::InternedString;
 use syntax::ptr::P;
 use syntax::{ast_map, ast_util, codemap};
@@ -594,7 +595,16 @@ fn fromb(b: bool) -> const_val { const_int(b as i64) }
         match try!(eval_const_expr_partial(tcx, &**inner, ety)) {
           const_float(f) => const_float(-f),
           const_int(n) =>  try!(const_int_checked_neg(n, e, expr_int_type)),
-          const_uint(n) => try!(const_uint_checked_neg(n, e, expr_uint_type)),
+          const_uint(i) => {
+              if !tcx.sess.features.borrow().negate_unsigned {
+                  feature_gate::emit_feature_err(
+                      &tcx.sess.parse_sess.span_diagnostic,
+                      "negate_unsigned",
+                      e.span,
+                      "unary negation of unsigned integers may be removed in the future");
+              }
+              const_uint(n) => try!(const_uint_checked_neg(n, e, expr_uint_type)),
+          }
           const_str(_) => signal!(e, NegateOnString),
           const_bool(_) => signal!(e, NegateOnBoolean),
           const_binary(_) => signal!(e, NegateOnBinary),
index e7443af3013aeff4519b5eae2585187b7257782f..cc22f8ff809ef0b1fc1e4ee3aef2c9468fa50788 100644 (file)
@@ -116,7 +116,7 @@ pub struct TypeLimits {
 impl TypeLimits {
     pub fn new() -> TypeLimits {
         TypeLimits {
-            negated_expr_id: -1,
+            negated_expr_id: !0,
         }
     }
 }
index e32d8e2b9cfdf8a7924442365489a2fb75598cd5..fd1fff308dfe3a543252305d73c4a9e427c3b326 100644 (file)
@@ -830,7 +830,7 @@ fn load_discr(bcx: Block, ity: IntType, ptr: ValueRef, min: Disr, max: Disr)
     let bits = machine::llbitsize_of_real(bcx.ccx(), llty);
     assert!(bits <= 64);
     let  bits = bits as usize;
-    let mask = (-1u64 >> (64 - bits)) as Disr;
+    let mask = (!0u64 >> (64 - bits)) as Disr;
     // For a (max) discr of -1, max will be `-1 as usize`, which overflows.
     // However, that is fine here (it would still represent the full range),
     if (max.wrapping_add(1)) & mask == min & mask {
index 20677ab93fc57ecfca93af7b6cc8efe0e1cbf4a2..51db1430ae250d7b5b4aa397a130a1c70ced9071 100644 (file)
@@ -868,7 +868,7 @@ pub fn fail_if_zero_or_overflows<'blk, 'tcx>(
             _ => unreachable!(),
         };
         let minus_one = ICmp(bcx, llvm::IntEQ, rhs,
-                             C_integral(llty, -1, false), debug_loc);
+                             C_integral(llty, !0, false), debug_loc);
         with_cond(bcx, minus_one, |bcx| {
             let is_min = ICmp(bcx, llvm::IntEQ, lhs,
                               C_integral(llty, min, true), debug_loc);
@@ -1388,7 +1388,7 @@ pub fn new_fn_ctxt<'a, 'tcx>(ccx: &'a CrateContext<'a, 'tcx>,
     common::validate_substs(param_substs);
 
     debug!("new_fn_ctxt(path={}, id={}, param_substs={})",
-           if id == -1 {
+           if id == !0 {
                "".to_string()
            } else {
                ccx.tcx().map.path_to_string(id).to_string()
index 3542bcd081f31c3e744988daac3d34750c3ff353..8919a386a45fb0ac1182174d8dbc65301f9f0318 100644 (file)
@@ -459,7 +459,7 @@ fn dummy_ccx<'a>(&'a self, shared: &'a SharedCrateContext<'tcx>)
         CrateContext {
             shared: shared,
             local: self,
-            index: -1 as usize,
+            index: !0 as usize,
         }
     }
 }
index ce1539c62f80bc673edba482ca1fa2c35ee3f435..40390765dde84b54b5addb290961af2fce61cb32 100644 (file)
@@ -388,7 +388,7 @@ pub fn local_id(&self) -> NodeId {
 /// When parsing and doing expansions, we initially give all AST nodes this AST
 /// node value. Then later, in the renumber pass, we renumber them to have
 /// small, positive ids.
-pub const DUMMY_NODE_ID: NodeId = -1;
+pub const DUMMY_NODE_ID: NodeId = !0;
 
 /// The AST represents all type param bounds as types.
 /// typeck::collect::compute_bounds matches these against
index 6a00fff186002f4383ec2b0e24da9556d3b25dcd..c2f2c51ed2cff67a362564f58df20e89011e730c 100644 (file)
@@ -278,9 +278,9 @@ pub struct ExpnInfo {
 #[derive(PartialEq, Eq, Clone, Debug, Hash, RustcEncodable, RustcDecodable, Copy)]
 pub struct ExpnId(u32);
 
-pub const NO_EXPANSION: ExpnId = ExpnId(-1);
+pub const NO_EXPANSION: ExpnId = ExpnId(!0);
 // For code appearing from the command line
-pub const COMMAND_LINE_EXPN: ExpnId = ExpnId(-2);
+pub const COMMAND_LINE_EXPN: ExpnId = ExpnId(!1);
 
 impl ExpnId {
     pub fn from_llvm_cookie(cookie: c_uint) -> ExpnId {