Skip to content

Commit fe779c5

Browse files
committed
Added missing test files
1 parent 8caef7b commit fe779c5

File tree

4 files changed

+135
-0
lines changed

4 files changed

+135
-0
lines changed

src/compile_test.rs

+4
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,11 @@ test_lib! {recursive}
570570
test_lib! {tuple}
571571

572572
run_test! {arthm,add}
573+
573574
run_test! {arthm,mul}
575+
576+
run_test! {types,tuple_structs}
577+
574578
run_test! {arthm,sub}
575579
run_test! {types,enums}
576580
run_test! {types,nbody}

test/recursive.rs

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
pub struct LinkedListNode<T>{
2+
next:*mut Self,
3+
val:T,
4+
}
5+
pub struct BetterLinkedList<T>{
6+
next:Option<*mut Self>,
7+
val:T,
8+
}
9+
pub struct DoubleLinkedListNode<T>{
10+
next:*mut Self,
11+
prev:*mut Self,
12+
val:T,
13+
}
14+
pub struct BetterDoubleLinkedListNode<T>{
15+
next:Option<*mut Self>,
16+
prev:Option<*mut Self>,
17+
val:T,
18+
}
19+
#[no_mangle]
20+
pub fn get_nth(curr:*mut LinkedListNode<usize>,nth:usize)->Option<usize>{
21+
if nth == 0{
22+
Some(unsafe{(*curr).val})
23+
}
24+
else{
25+
let next = unsafe{(*curr).next};
26+
if next == core::ptr::null_mut(){
27+
None
28+
}
29+
else{
30+
get_nth(next,nth - 1)
31+
}
32+
}
33+
}
34+
#[no_mangle]
35+
pub fn get_nth_b(curr:*mut BetterLinkedList<usize>,nth:usize)->Option<usize>{
36+
if nth == 0{
37+
Some(unsafe{(*curr).val})
38+
}
39+
else{
40+
let next = unsafe{(*curr).next};
41+
if let Some(next) = next{
42+
get_nth_b(next,nth - 1)//None
43+
}
44+
else{
45+
None
46+
}
47+
}
48+
}
49+
#[no_mangle]
50+
pub fn get_nth_d(curr:*mut DoubleLinkedListNode<usize>,nth:usize)->Option<usize>{
51+
if nth == 0{
52+
Some(unsafe{(*curr).val})
53+
}
54+
else{
55+
let next = unsafe{(*curr).next};
56+
if next == core::ptr::null_mut(){
57+
None
58+
}
59+
else{
60+
get_nth_d(next,nth - 1)
61+
}
62+
}
63+
}
64+
#[no_mangle]
65+
pub fn get_nth_back_d(curr:*mut DoubleLinkedListNode<usize>,nth:usize)->Option<usize>{
66+
if nth == 0{
67+
Some(unsafe{(*curr).val})
68+
}
69+
else{
70+
let prev = unsafe{(*curr).prev};
71+
if prev == core::ptr::null_mut(){
72+
None
73+
}
74+
else{
75+
get_nth_d(prev,nth - 1)
76+
}
77+
}
78+
}
79+
#[no_mangle]
80+
pub fn get_nth_db(curr:*mut BetterDoubleLinkedListNode<usize>,nth:usize)->Option<usize>{
81+
if nth == 0{
82+
Some(unsafe{(*curr).val})
83+
}
84+
else{
85+
let next = unsafe{(*curr).next};
86+
if let Some(next) = next{
87+
get_nth_db(next,nth - 1)
88+
}
89+
else{
90+
None
91+
}
92+
}
93+
}
94+
#[no_mangle]
95+
pub fn get_nth_back_db(curr:*mut BetterDoubleLinkedListNode<usize>,nth:usize)->Option<usize>{
96+
if nth == 0{
97+
Some(unsafe{(*curr).val})
98+
}
99+
else{
100+
let prev = unsafe{(*curr).prev};
101+
if let Some(prev) = prev{
102+
get_nth_db(prev,nth - 1)
103+
}
104+
else{
105+
None
106+
}
107+
}
108+
}

test/tuple.rs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#![allow(improper_ctypes_definitions)]
2+
pub struct Inner{
3+
}
4+
pub struct TupleOwner{
5+
tuple:(usize,*mut Inner)
6+
}
7+
#[no_mangle]
8+
pub extern "C" fn set_inner(owner:&mut TupleOwner,inner:*mut Inner){
9+
owner.tuple = (77,inner);
10+
}
11+
pub extern "C" fn read_inner(owner:&TupleOwner)->&*mut Inner{
12+
&owner.tuple.1
13+
}

test/types/tuple_structs.rs

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#![feature(lang_items,adt_const_params,associated_type_defaults,core_intrinsics,start)]
2+
#![allow(internal_features,incomplete_features,unused_variables,dead_code)]
3+
#![no_std]
4+
struct TupleStyleStruct(u32,u8);
5+
include!("../common.rs");
6+
fn main(){
7+
let mut tst = black_box(TupleStyleStruct(black_box(8),1));
8+
tst.0 += tst.1 as u32;
9+
black_box(tst);
10+
}

0 commit comments

Comments
 (0)