Skip to content

Commit

Permalink
Make Num::from_int a static method
Browse files Browse the repository at this point in the history
  • Loading branch information
catamorphism committed Aug 15, 2012
1 parent f78c906 commit ccd3643
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 22 deletions.
2 changes: 1 addition & 1 deletion src/libcore/f32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ impl f32: num::Num {
pure fn neg() -> f32 { return -self; }

pure fn to_int() -> int { return self as int; }
pure fn from_int(n: int) -> f32 { return n as f32; }
static pure fn from_int(n: int) -> f32 { return n as f32; }
}

//
Expand Down
2 changes: 1 addition & 1 deletion src/libcore/f64.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ impl f64: num::Num {
pure fn neg() -> f64 { return -self; }

pure fn to_int() -> int { return self as int; }
pure fn from_int(n: int) -> f64 { return n as f64; }
static pure fn from_int(n: int) -> f64 { return n as f64; }
}

//
Expand Down
14 changes: 7 additions & 7 deletions src/libcore/float.rs
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ impl float: num::Num {
pure fn neg() -> float { return -self; }

pure fn to_int() -> int { return self as int; }
pure fn from_int(n: int) -> float { return n as float; }
static pure fn from_int(n: int) -> float { return n as float; }
}

#[test]
Expand Down Expand Up @@ -523,14 +523,14 @@ fn test_traits() {
fn test<U:num::Num>(ten: &U) {
assert (ten.to_int() == 10);

let two = ten.from_int(2);
let two = from_int(2);
assert (two.to_int() == 2);

assert (ten.add(two) == ten.from_int(12));
assert (ten.sub(two) == ten.from_int(8));
assert (ten.mul(two) == ten.from_int(20));
assert (ten.div(two) == ten.from_int(5));
assert (ten.modulo(two) == ten.from_int(0));
assert (ten.add(two) == from_int(12));
assert (ten.sub(two) == from_int(8));
assert (ten.mul(two) == from_int(20));
assert (ten.div(two) == from_int(5));
assert (ten.modulo(two) == from_int(0));
}

test(&10.0);
Expand Down
16 changes: 8 additions & 8 deletions src/libcore/int-template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ impl T: num::Num {
pure fn neg() -> T { return -self; }

pure fn to_int() -> int { return self as int; }
pure fn from_int(n: int) -> T { return n as T; }
static pure fn from_int(n: int) -> T { return n as T; }
}

impl T: iter::times {
Expand Down Expand Up @@ -238,15 +238,15 @@ fn test_interfaces() {
fn test<U:num::Num>(ten: U) {
assert (ten.to_int() == 10);

let two = ten.from_int(2);
let two = from_int(2);
assert (two.to_int() == 2);

assert (ten.add(two) == ten.from_int(12));
assert (ten.sub(two) == ten.from_int(8));
assert (ten.mul(two) == ten.from_int(20));
assert (ten.div(two) == ten.from_int(5));
assert (ten.modulo(two) == ten.from_int(0));
assert (ten.neg() == ten.from_int(-10));
assert (ten.add(two) == from_int(12));
assert (ten.sub(two) == from_int(8));
assert (ten.mul(two) == from_int(20));
assert (ten.div(two) == from_int(5));
assert (ten.modulo(two) == from_int(0));
assert (ten.neg() == from_int(-10));
}

test(10 as T);
Expand Down
5 changes: 1 addition & 4 deletions src/libcore/num.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
/// An interface for numbers.

trait Num {
// FIXME: Cross-crate overloading doesn't work yet. (#2615)
// FIXME: Trait composition. (#2616)
pure fn add(&&other: self) -> self;
pure fn sub(&&other: self) -> self;
Expand All @@ -11,7 +10,5 @@ trait Num {
pure fn neg() -> self;

pure fn to_int() -> int;
pure fn from_int(n: int) -> self; // FIXME (#2376) Static functions.
// n.b. #2376 is for classes, not traits, but it could be generalized...
static pure fn from_int(n: int) -> self;
}

2 changes: 1 addition & 1 deletion src/libcore/uint-template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ impl T: num::Num {
pure fn neg() -> T { return -self; }

pure fn to_int() -> int { return self as int; }
pure fn from_int(n: int) -> T { return n as T; }
static pure fn from_int(n: int) -> T { return n as T; }
}

impl T: iter::times {
Expand Down

0 comments on commit ccd3643

Please sign in to comment.