mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-05 20:34:52 +00:00
Driveby cleanup of the impl for negation, which had some kind of
surprising casts. This version more obviously corresponds to the builtin semantics.
This commit is contained in:
parent
d649292e60
commit
d6466ff13a
@ -485,6 +485,7 @@ pub trait Neg {
|
|||||||
macro_rules! neg_impl {
|
macro_rules! neg_impl {
|
||||||
($($t:ty)*) => ($(
|
($($t:ty)*) => ($(
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[allow(unsigned_negation)]
|
||||||
impl Neg for $t {
|
impl Neg for $t {
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
type Output = $t;
|
type Output = $t;
|
||||||
@ -498,28 +499,7 @@ macro_rules! neg_impl {
|
|||||||
)*)
|
)*)
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! neg_uint_impl {
|
neg_impl! { usize u8 u16 u32 u64 isize i8 i16 i32 i64 f32 f64 }
|
||||||
($t:ty, $t_signed:ty) => {
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
|
||||||
impl Neg for $t {
|
|
||||||
type Output = $t;
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
fn neg(self) -> $t { -(self as $t_signed) as $t }
|
|
||||||
}
|
|
||||||
|
|
||||||
forward_ref_unop! { impl Neg, neg for $t }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
neg_impl! { isize i8 i16 i32 i64 f32 f64 }
|
|
||||||
|
|
||||||
neg_uint_impl! { usize, isize }
|
|
||||||
neg_uint_impl! { u8, i8 }
|
|
||||||
neg_uint_impl! { u16, i16 }
|
|
||||||
neg_uint_impl! { u32, i32 }
|
|
||||||
neg_uint_impl! { u64, i64 }
|
|
||||||
|
|
||||||
|
|
||||||
/// The `Not` trait is used to specify the functionality of unary `!`.
|
/// The `Not` trait is used to specify the functionality of unary `!`.
|
||||||
///
|
///
|
||||||
|
@ -23,4 +23,6 @@ fn main() {
|
|||||||
unsafe { libc::exit(0 as libc::c_int); }
|
unsafe { libc::exit(0 as libc::c_int); }
|
||||||
});
|
});
|
||||||
2_usize + (loop {});
|
2_usize + (loop {});
|
||||||
|
//~^ ERROR E0277
|
||||||
|
//~| ERROR E0277
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user