diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2011-06-10 10:46:59 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2011-06-10 10:47:33 -0700 |
| commit | dfdd6dbc5464147d984470086ab27c950d60d83e (patch) | |
| tree | 0cef168e2bebe9ce4aeba5a96f1647216bee3ea4 | |
| parent | 7a066ba547ab900d22fd435652fd9106ba180dfa (diff) | |
rustc: Remove the bitwise not operator
| -rw-r--r-- | src/comp/front/ast.rs | 2 | ||||
| -rw-r--r-- | src/comp/front/parser.rs | 7 | ||||
| -rw-r--r-- | src/comp/middle/trans.rs | 5 | ||||
| -rw-r--r-- | src/comp/middle/typeck.rs | 10 | ||||
| -rw-r--r-- | src/lib/bitv.rs | 10 | ||||
| -rw-r--r-- | src/lib/sha1.rs | 2 |
6 files changed, 14 insertions, 22 deletions
diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs index 37d26a6889a..a61562b9c16 100644 --- a/src/comp/front/ast.rs +++ b/src/comp/front/ast.rs @@ -183,7 +183,6 @@ fn binop_to_str(binop op) -> str { tag unop { box(mutability); deref; - bitnot; not; neg; } @@ -195,7 +194,6 @@ fn unop_to_str(unop op) -> str { ret "@"; } case (deref) {ret "*";} - case (bitnot) {ret "~";} case (not) {ret "!";} case (neg) {ret "-";} } diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs index 980daa40135..7aa4d7b8ee6 100644 --- a/src/comp/front/parser.rs +++ b/src/comp/front/parser.rs @@ -1172,13 +1172,6 @@ fn parse_prefix_expr(&parser p) -> @ast::expr { ex = ast::expr_unary(ast::not, e, p.get_ann()); } - case (token::TILDE) { - p.bump(); - auto e = parse_prefix_expr(p); - hi = e.span.hi; - ex = ast::expr_unary(ast::bitnot, e, p.get_ann()); - } - case (token::BINOP(?b)) { alt (b) { case (token::MINUS) { diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 4e1c3a01f44..ec51e8e691b 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -3388,11 +3388,6 @@ fn trans_unary(&@block_ctxt cx, ast::unop op, auto e_ty = ty::expr_ty(cx.fcx.lcx.ccx.tcx, e); alt (op) { - case (ast::bitnot) { - sub = autoderef(sub.bcx, sub.val, - ty::expr_ty(cx.fcx.lcx.ccx.tcx, e)); - ret res(sub.bcx, sub.bcx.build.Not(sub.val)); - } case (ast::not) { sub = autoderef(sub.bcx, sub.val, ty::expr_ty(cx.fcx.lcx.ccx.tcx, e)); diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index fe7d793db7f..289691444b0 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -1580,6 +1580,16 @@ fn check_expr(&@fn_ctxt fcx, &@ast::expr expr) { } } } + case (ast::not) { + if (!type_is_integral(fcx, oper.span, oper_t) && + structure_of(fcx, oper.span, oper_t) + != ty::ty_bool) { + fcx.ccx.tcx.sess.span_err(expr.span, + #fmt("mismatched types: expected bool or \ + integer but found %s", + ty_to_str(fcx.ccx.tcx, oper_t))); + } + } case (_) { oper_t = strip_boxes(fcx, expr.span, oper_t); } } diff --git a/src/lib/bitv.rs b/src/lib/bitv.rs index 7e8323f9ef5..689f3501b52 100644 --- a/src/lib/bitv.rs +++ b/src/lib/bitv.rs @@ -32,11 +32,7 @@ fn uint_bits() -> uint { } fn create(uint nbits, bool init) -> t { - auto elt = if (init) { - ~0u - } else { - 0u - }; + auto elt = if (init) { !0u } else { 0u }; auto storage = vec::init_elt_mut[uint](elt, nbits / uint_bits() + 1u); ret rec(storage = storage, nbits = nbits); @@ -139,7 +135,7 @@ fn set_all(&t v) { fn invert(&t v) { for each (uint i in uint::range(0u, vec::len(v.storage))) { - v.storage.(i) = ~v.storage.(i); + v.storage.(i) = !v.storage.(i); } } @@ -163,7 +159,7 @@ fn set(&t v, uint i, bool x) { v.storage.(w) = if (x) { v.storage.(w) | flag } else { - v.storage.(w) & ~flag + v.storage.(w) & !flag }; } diff --git a/src/lib/sha1.rs b/src/lib/sha1.rs index afec96e38b3..215671c545e 100644 --- a/src/lib/sha1.rs +++ b/src/lib/sha1.rs @@ -110,7 +110,7 @@ fn mk_sha1() -> sha1 { t = 0; while (t < 20) { temp = circular_shift(5u32, a) - + ((b & c) | ((~b) & d)) + e + w.(t) + k0; + + ((b & c) | ((!b) & d)) + e + w.(t) + k0; e = d; d = c; c = circular_shift(30u32, b); |
