Updated type grammar #65

This commit is contained in:
2026-06-05 17:06:06 +02:00
parent 94320bafa6
commit 40b2981252
13 changed files with 5 additions and 823 deletions
-165
View File
@@ -1,165 +0,0 @@
pub void test_var_decl() {
let x = 42;
assert_eq!(x, 42);
i32 y = 10;
assert_eq!(y, 10);
str* name = "mist";
assert_eq!(name, "mist");
}
pub void test_var_decl_with_init() {
let mut x = 0;
x = 5;
assert_eq!(x, 5);
}
pub void test_if_statement() {
let mut x = 0;
if (true) {
x = 1;
}
assert_eq!(x, 1);
if (false) {
x = 2;
} else {
x = 3;
}
assert_eq!(x, 3);
}
pub void test_if_else_if() {
let mut x = 0;
if (x == 1) {
x = 10;
} else if (x == 0) {
x = 20;
} else {
x = 30;
}
assert_eq!(x, 20);
}
pub void test_while_loop() {
let mut count = 0;
while (count < 5) {
count++;
}
assert_eq!(count, 5);
}
pub void test_for_loop() {
let mut sum = 0;
for (i : 0..4) {
sum += i;
}
assert_eq!(sum, 6);
}
pub void test_loop_stmt() {
let mut count = 0;
loop {
count++;
if (count >= 3) {
break;
}
}
assert_eq!(count, 3);
}
pub void test_break_continue() {
let mut sum = 0;
for (i : 0..10) {
if (i % 2 == 0) {
continue;
}
if (i >= 7) {
break;
}
sum += i;
}
assert_eq!(sum, 1 + 3 + 5);
}
pub i32 test_return_from_fn() {
return 42;
}
pub void test_block_scope() {
let x = {
let inner = 10;
inner + 5
};
assert_eq!(x, 15);
}
pub void test_match_literal() {
let x = 2;
let mut result = 0;
match (x) {
1 => { result = 10; }
2 => { result = 20; }
3 => { result = 30; }
_ => panic!();
}
assert_eq!(result, 20);
}
pub void test_match_or_pattern() {
let x = 1;
let mut result = 0;
match (x) {
1 | 2 => { result = 100; }
3 => { result = 200; }
_ => panic!();
}
assert_eq!(result, 100);
}
pub void test_match_default() {
let x = 99;
let mut result = 0;
match (x) {
1 => { result = 10; }
y => { result = y; }
}
assert_eq!(result, 99);
}
pub void test_for_with_pattern_destructure() {
let pairs = [(1, "a"), (2, "b")];
let mut keys = 0;
for ([k, _] : pairs) {
keys += k;
}
assert_eq!(keys, 3);
}
pub void run_tests() {
test_var_decl();
test_var_decl_with_init();
test_if_statement();
test_if_else_if();
test_while_loop();
test_for_loop();
test_loop_stmt();
test_break_continue();
assert_eq!(test_return_from_fn(), 42);
test_block_scope();
test_match_literal();
test_match_or_pattern();
test_match_default();
test_for_with_pattern_destructure();
}