adding more tests and organizing things
This commit is contained in:
parent
44c4b71bb3
commit
ccfde6c237
|
@ -41,7 +41,7 @@ Following examples incrementally introduce language features and syntax.
|
||||||
#### main_fn
|
#### main_fn
|
||||||
```hb
|
```hb
|
||||||
main := fn(): int {
|
main := fn(): int {
|
||||||
return 1;
|
return 1
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -191,6 +191,21 @@ odher_pass := fn(t: Ty2): Ty2 {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### hex_octal_binary_literals
|
||||||
|
```hb
|
||||||
|
main := fn(): int {
|
||||||
|
hex := 0xFF
|
||||||
|
decimal := 255
|
||||||
|
octal := 0o377
|
||||||
|
binary := 0b11111111
|
||||||
|
|
||||||
|
if hex == decimal & octal == decimal & binary == decimal {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
#### struct_operators
|
#### struct_operators
|
||||||
```hb
|
```hb
|
||||||
Point := struct {
|
Point := struct {
|
||||||
|
@ -619,8 +634,7 @@ Foo := struct {x: int, y: u32, z: u32}
|
||||||
#### sort_something_viredly
|
#### sort_something_viredly
|
||||||
```hb
|
```hb
|
||||||
main := fn(): int {
|
main := fn(): int {
|
||||||
foo := sqrt
|
return sqrt(1)
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sqrt := fn(x: int): int {
|
sqrt := fn(x: int): int {
|
||||||
|
@ -642,21 +656,6 @@ sqrt := fn(x: int): int {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### hex_octal_binary_literals
|
|
||||||
```hb
|
|
||||||
main := fn(): int {
|
|
||||||
hex := 0xFF
|
|
||||||
decimal := 255
|
|
||||||
octal := 0o377
|
|
||||||
binary := 0b11111111
|
|
||||||
|
|
||||||
if hex == decimal & octal == decimal & binary == decimal {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### structs_in_registers
|
#### structs_in_registers
|
||||||
```hb
|
```hb
|
||||||
ColorBGRA := struct {b: u8, g: u8, r: u8, a: u8}
|
ColorBGRA := struct {b: u8, g: u8, r: u8, a: u8}
|
||||||
|
@ -824,7 +823,7 @@ integer_range := fn(min: uint, max: int): uint {
|
||||||
```hb
|
```hb
|
||||||
outl := fn(): void {
|
outl := fn(): void {
|
||||||
msg := "whahaha\0"
|
msg := "whahaha\0"
|
||||||
@as(u8, 0)
|
_u := @as(u8, 0)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3268,44 +3268,52 @@ mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
crate::run_tests! { generate:
|
crate::run_tests! { generate:
|
||||||
|
// Tour Examples
|
||||||
|
main_fn;
|
||||||
arithmetic;
|
arithmetic;
|
||||||
variables;
|
|
||||||
functions;
|
functions;
|
||||||
comments;
|
comments;
|
||||||
if_statements;
|
if_statements;
|
||||||
|
variables;
|
||||||
loops;
|
loops;
|
||||||
fb_driver;
|
|
||||||
pointers;
|
pointers;
|
||||||
structs;
|
structs;
|
||||||
//different_types;
|
hex_octal_binary_literals;
|
||||||
//struct_operators;
|
//struct_operators;
|
||||||
//directives;
|
|
||||||
global_variables;
|
global_variables;
|
||||||
//generic_types;
|
//directives;
|
||||||
//generic_functions;
|
|
||||||
c_strings;
|
c_strings;
|
||||||
//struct_patterns;
|
//struct_patterns;
|
||||||
arrays;
|
arrays;
|
||||||
//struct_return_from_module_function;
|
|
||||||
////comptime_pointers;
|
|
||||||
//sort_something_viredly;
|
|
||||||
hex_octal_binary_literals;
|
|
||||||
//comptime_min_reg_leak;
|
|
||||||
////structs_in_registers;
|
|
||||||
//comptime_function_from_another_file;
|
|
||||||
//inline;
|
//inline;
|
||||||
|
//idk;
|
||||||
|
//wide_ret;
|
||||||
|
|
||||||
|
// Incomplete Examples;
|
||||||
|
//comptime_pointers;
|
||||||
|
//generic_types;
|
||||||
|
//generic_functions;
|
||||||
|
fb_driver;
|
||||||
|
|
||||||
|
// Purely Testing Examples;
|
||||||
|
comptime_min_reg_leak;
|
||||||
|
//different_types;
|
||||||
|
//struct_return_from_module_function;
|
||||||
|
sort_something_viredly;
|
||||||
|
//structs_in_registers;
|
||||||
|
comptime_function_from_another_file;
|
||||||
//inline_test;
|
//inline_test;
|
||||||
|
//inlined_generic_functions;
|
||||||
|
//some_generic_code;
|
||||||
|
//integer_inference_issues;
|
||||||
|
writing_into_string;
|
||||||
|
//request_page;
|
||||||
|
//tests_ptr_to_ptr_copy;
|
||||||
|
|
||||||
|
// Just Testing Optimizations;
|
||||||
const_folding_with_arg;
|
const_folding_with_arg;
|
||||||
branch_assignments;
|
branch_assignments;
|
||||||
exhaustive_loop_testing;
|
exhaustive_loop_testing;
|
||||||
//idk;
|
|
||||||
comptime_min_reg_leak;
|
|
||||||
//some_generic_code;
|
|
||||||
//integer_inference_issues;
|
|
||||||
//writing_into_string;
|
|
||||||
//request_page;
|
|
||||||
//tests_ptr_to_ptr_copy;
|
|
||||||
//wide_ret;
|
|
||||||
pointer_opts;
|
pointer_opts;
|
||||||
conditional_stores;
|
conditional_stores;
|
||||||
loop_stores;
|
loop_stores;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
main:
|
||||||
|
LRA r1, r0, :a
|
||||||
|
LD r1, r1, 0a, 8h
|
||||||
|
JALA r0, r31, 0a
|
||||||
|
code size: 47
|
||||||
|
ret: 50
|
||||||
|
status: Ok(())
|
6
lang/tests/son_tests_main_fn.txt
Normal file
6
lang/tests/son_tests_main_fn.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
main:
|
||||||
|
LI64 r1, 1d
|
||||||
|
JALA r0, r31, 0a
|
||||||
|
code size: 29
|
||||||
|
ret: 1
|
||||||
|
status: Ok(())
|
29
lang/tests/son_tests_sort_something_viredly.txt
Normal file
29
lang/tests/son_tests_sort_something_viredly.txt
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
main:
|
||||||
|
ADDI64 r254, r254, -8d
|
||||||
|
ST r31, r254, 0a, 8h
|
||||||
|
LI64 r2, 1d
|
||||||
|
JAL r31, r0, :sqrt
|
||||||
|
LD r31, r254, 0a, 8h
|
||||||
|
ADDI64 r254, r254, 8d
|
||||||
|
JALA r0, r31, 0a
|
||||||
|
sqrt:
|
||||||
|
LI64 r7, 15d
|
||||||
|
LI64 r8, 32768d
|
||||||
|
LI64 r5, 0d
|
||||||
|
CP r1, r5
|
||||||
|
3: JNE r8, r5, :0
|
||||||
|
JMP :1
|
||||||
|
0: SLUI64 r4, r1, 1b
|
||||||
|
ADDI64 r7, r7, -1d
|
||||||
|
ADD64 r9, r4, r8
|
||||||
|
SLU64 r9, r9, r7
|
||||||
|
JLTU r2, r9, :2
|
||||||
|
ADD64 r1, r8, r1
|
||||||
|
SUB64 r2, r2, r9
|
||||||
|
JMP :2
|
||||||
|
2: SRUI64 r8, r8, 1b
|
||||||
|
JMP :3
|
||||||
|
1: JALA r0, r31, 0a
|
||||||
|
code size: 188
|
||||||
|
ret: 0
|
||||||
|
status: Ok(())
|
15
lang/tests/son_tests_writing_into_string.txt
Normal file
15
lang/tests/son_tests_writing_into_string.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
inl:
|
||||||
|
JALA r0, r31, 0a
|
||||||
|
main:
|
||||||
|
ADDI64 r254, r254, -8d
|
||||||
|
ST r31, r254, 0a, 8h
|
||||||
|
JAL r31, r0, :outl
|
||||||
|
JAL r31, r0, :inl
|
||||||
|
LD r31, r254, 0a, 8h
|
||||||
|
ADDI64 r254, r254, 8d
|
||||||
|
JALA r0, r31, 0a
|
||||||
|
outl:
|
||||||
|
JALA r0, r31, 0a
|
||||||
|
code size: 103
|
||||||
|
ret: 0
|
||||||
|
status: Ok(())
|
Loading…
Reference in a new issue