Skip to content

Commit 172ee8a

Browse files
committed
Better type support. Some casts now work. Some if's and match'es now work.
1 parent 25db06d commit 172ee8a

File tree

4 files changed

+92
-0
lines changed

4 files changed

+92
-0
lines changed

test/binops.rs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#[no_mangle]
2+
pub extern fn subi32(a:i32,b:i32)->i32{a-b}
3+
#[no_mangle]
4+
pub extern fn muli32(a:i32,b:i32)->i32{a*b}
5+
//#[no_mangle]
6+
//pub extern fn divi32(a:i32,b:i32)->i32{a/b}
7+
//#[no_mangle]
8+
//pub extern fn remi32(a:i32,b:i32)->i32{a%b}
9+
#[no_mangle]
10+
pub extern fn shli32(a:i32,b:i32)->i32{a<<b}
11+
#[no_mangle]
12+
pub extern fn shri32(a:i32,b:i32)->i32{a>>b}
13+
14+
#[no_mangle]
15+
pub extern fn eq(a:i32,b:i32)->bool{a == b}
16+
17+
//More complex tests
18+
#[no_mangle]
19+
pub extern fn sqr_mag(ax:i32,ay:i32)->i32{ax*ax + ay*ay}
20+
#[no_mangle]
21+
pub extern fn pow2(power:i32)->i32{1<<power}

test/branches.rs

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
#[no_mangle]
3+
pub extern fn seven_if_even(input:i32)->i8{
4+
if input % 2 == 0{
5+
7
6+
}
7+
else{
8+
0
9+
}
10+
}
11+
#[no_mangle]
12+
pub extern fn test_match(pi_digit:i8)->i8{
13+
match pi_digit{
14+
0=>3,
15+
1=>1,
16+
2=>4,
17+
3=>1,
18+
4=>5,
19+
5=>9,
20+
6=>2,
21+
7=>6,
22+
8=>5,
23+
9=>3,
24+
10=>5,
25+
_=>9,
26+
}
27+
}

test/casts.rs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#[no_mangle]
2+
pub extern fn cast_f32_to_i32(a:f32)->i32{a as i32}
3+
#[no_mangle]
4+
pub extern fn cast_i8_to_i32(a:i8)->i32{a as i32}
5+
#[no_mangle]
6+
pub extern fn cast_f32_to_i8(a:f32)->i8{a as i8}
7+
#[no_mangle]
8+
pub extern fn cast_i64_to_i32(a:i64)->i32{a as i32}
9+
10+
#[no_mangle]
11+
pub extern fn casti32tof32(a:i32)->f32{a as f32}

test/types.rs

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#[no_mangle]
2+
pub extern fn addisize(a:isize,b:isize)->isize{a+b}
3+
#[no_mangle]
4+
pub extern fn addi128(a:i128,b:i128)->i128{a+b}
5+
#[no_mangle]
6+
pub extern fn addi64(a:i64,b:i64)->i64{a+b}
7+
#[no_mangle]
8+
pub extern fn addi32(a:i32,b:i32)->i32{a+b}
9+
#[no_mangle]
10+
pub extern fn addi16(a:i16,b:i16)->i16{a+b}
11+
#[no_mangle]
12+
pub extern fn addi8(a:i8,b:i8)->i8{a+b}
13+
14+
#[no_mangle]
15+
pub extern fn addusize(a:usize,b:usize)->usize{a+b}
16+
#[no_mangle]
17+
pub extern fn addu128(a:u128,b:u128)->u128{a+b}
18+
#[no_mangle]
19+
pub extern fn addu64(a:u64,b:u64)->u64{a+b}
20+
#[no_mangle]
21+
pub extern fn addu32(a:u32,b:u32)->u32{a+b}
22+
#[no_mangle]
23+
pub extern fn addu16(a:u16,b:u16)->u16{a+b}
24+
#[no_mangle]
25+
pub extern fn addu8(a:u8,b:u8)->u8{a+b}
26+
27+
#[no_mangle]
28+
pub extern fn addf32(a:f32,b:f32)->f32{a+b}
29+
#[no_mangle]
30+
pub extern fn addf64(a:f64,b:f64)->f64{a+b}
31+
#[no_mangle]
32+
pub extern fn boolident(a:bool)->bool{a}
33+

0 commit comments

Comments
 (0)