Skip to content

Commit d6466ff

Browse files
committed
Driveby cleanup of the impl for negation, which had some kind of
surprising casts. This version more obviously corresponds to the builtin semantics.
1 parent d649292 commit d6466ff

File tree

2 files changed

+4
-22
lines changed

2 files changed

+4
-22
lines changed

src/libcore/ops.rs

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,7 @@ pub trait Neg {
485485
macro_rules! neg_impl {
486486
($($t:ty)*) => ($(
487487
#[stable(feature = "rust1", since = "1.0.0")]
488+
#[allow(unsigned_negation)]
488489
impl Neg for $t {
489490
#[stable(feature = "rust1", since = "1.0.0")]
490491
type Output = $t;
@@ -498,28 +499,7 @@ macro_rules! neg_impl {
498499
)*)
499500
}
500501

501-
macro_rules! neg_uint_impl {
502-
($t:ty, $t_signed:ty) => {
503-
#[stable(feature = "rust1", since = "1.0.0")]
504-
impl Neg for $t {
505-
type Output = $t;
506-
507-
#[inline]
508-
fn neg(self) -> $t { -(self as $t_signed) as $t }
509-
}
510-
511-
forward_ref_unop! { impl Neg, neg for $t }
512-
}
513-
}
514-
515-
neg_impl! { isize i8 i16 i32 i64 f32 f64 }
516-
517-
neg_uint_impl! { usize, isize }
518-
neg_uint_impl! { u8, i8 }
519-
neg_uint_impl! { u16, i16 }
520-
neg_uint_impl! { u32, i32 }
521-
neg_uint_impl! { u64, i64 }
522-
502+
neg_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 }
523503

524504
/// The `Not` trait is used to specify the functionality of unary `!`.
525505
///

src/test/run-pass/issue-13352.rs renamed to src/test/compile-fail/issue-13352.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,6 @@ fn main() {
2323
unsafe { libc::exit(0 as libc::c_int); }
2424
});
2525
2_usize + (loop {});
26+
//~^ ERROR E0277
27+
//~| ERROR E0277
2628
}

0 commit comments

Comments
 (0)