Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions testcases/arithmetic_mixed_signed_width_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
i8 a = 10;
i16 b = 20;
i32 c = a + b;
i64 d = c * 4;
4 changes: 4 additions & 0 deletions testcases/arithmetic_mixed_unsigned_width_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
u8 a = 10;
u16 b = 20;
u32 c = a + b;
u64 d = c * 4;
3 changes: 3 additions & 0 deletions testcases/arithmetic_negative_literal_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 x = -10;
i64 y = -20;
i64 z = x + y;
4 changes: 4 additions & 0 deletions testcases/arithmetic_precedence_parentheses_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
u64 x = 2;
u64 y = 3;
u64 z = 4;
u64 r = (x + y) * (z + x) / y;
3 changes: 3 additions & 0 deletions testcases/assignment_cast_expr_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 x = 300;
i8 y = x as i8;
y = (x as i16) as i8;
2 changes: 2 additions & 0 deletions testcases/assignment_parenthesized_expr_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
u64 x = 0;
x = (10 + 5) * (8 - 3);
3 changes: 3 additions & 0 deletions testcases/bitwise_complex_expression_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 a = 0xFF;
u64 b = 0b1010;
u64 c = (a & 0x0F) | (b << 2);
1 change: 1 addition & 0 deletions testcases/bool_numeric_cast_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i64 x = true as i64;
2 changes: 2 additions & 0 deletions testcases/cast_chain_signed_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i64 x = 300;
i8 a = x as i16 as i8;
2 changes: 2 additions & 0 deletions testcases/cast_chain_unsigned_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
u64 x = 300;
u8 a = x as u16 as u8;
2 changes: 2 additions & 0 deletions testcases/cast_self_type_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i32 x = 99;
i32 y = x as i32;
3 changes: 3 additions & 0 deletions testcases/comments_inline_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 x = 1; // inline comment
u64 y = 2; // inline comment
y = x + y; // inline comment
4 changes: 4 additions & 0 deletions testcases/comments_strip_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
// this whole line must be ignored
u64 x = 10;
// another comment
x = x + 5;
11 changes: 11 additions & 0 deletions testcases/complex_nested_program_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
i64 total = 0;
u64 i = 0;
while (i < 4) {
i64 step = i as i64;
if ((i & 1) == 0) {
total += step * 2;
} else {
total -= step;
}
i++;
}
3 changes: 3 additions & 0 deletions testcases/declaration_init_from_expr_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 a = 10;
i64 b = 20;
i64 c = (a + b) * 2;
8 changes: 8 additions & 0 deletions testcases/declaration_multiple_scopes_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
i64 x = 1;
{
i64 y = x;
{
i64 z = y;
x = z;
}
}
9 changes: 9 additions & 0 deletions testcases/declaration_shadow_chain_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
i64 value = 1;
{
i64 value = 2;
{
i64 value = 3;
}
value = 4;
}
value = 5;
3 changes: 3 additions & 0 deletions testcases/division_expression_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 x = 100;
i64 y = 5;
i64 z = x / y;
2 changes: 2 additions & 0 deletions testcases/expression_statement_arithmetic_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
u64 x = 1;
(x + 2) * 3;
2 changes: 2 additions & 0 deletions testcases/expression_statement_cast_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
u64 x = 999;
x as u8;
3 changes: 3 additions & 0 deletions testcases/hex_binary_literal_ops_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 x = 0x10;
u64 y = 0b11;
u64 z = (x | y) ^ 0x1;
8 changes: 8 additions & 0 deletions testcases/if_dangling_else_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
bool a = true;
bool b = false;
i64 x = 0;
if (a)
if (b)
x = 1;
else
x = 2;
7 changes: 7 additions & 0 deletions testcases/if_else_blocks_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
bool c = true;
i64 x = 0;
if (c) {
x = 1;
} else {
x = 2;
}
10 changes: 10 additions & 0 deletions testcases/if_else_elseif_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
u64 score = 85;
u64 payout = 0;

if (score >= 90) {
payout = 300;
} else if (score >= 80) {
payout = 200;
} else {
payout = 100;
}
9 changes: 9 additions & 0 deletions testcases/if_nested_else_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
i64 x = 10;
i64 y = 0;
if (x > 0) {
if (x > 5) {
y = 2;
} else {
y = 1;
}
}
3 changes: 3 additions & 0 deletions testcases/increment_non_variable_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 x = 1;

(x + 1)++;
1 change: 1 addition & 0 deletions testcases/lexer_invalid_binary_literal_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
u64 x = 0b102;
1 change: 1 addition & 0 deletions testcases/lexer_invalid_hex_literal_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
u64 x = 0xG1;
2 changes: 2 additions & 0 deletions testcases/lexer_invalid_token_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
u64 x = 1;
@
3 changes: 3 additions & 0 deletions testcases/literals_base_prefix_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 a = 0x2A;
u64 b = 0b101010;
u64 c = 42;
4 changes: 4 additions & 0 deletions testcases/literals_signed_bounds_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
i8 a = -128;
i16 b = -32768;
i32 c = -2147483648;
i64 d = -9223372036854775808;
4 changes: 4 additions & 0 deletions testcases/literals_unsigned_bounds_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
u8 a = 255;
u16 b = 65535;
u32 c = 4294967295;
u64 d = 18446744073709551615;
4 changes: 4 additions & 0 deletions testcases/logical_nested_parentheses_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
bool a = true;
bool b = false;
bool c = true;
bool d = (a && !b) || (b || c);
3 changes: 3 additions & 0 deletions testcases/logical_relational_mix_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 a = 10;
i64 b = 20;
bool ok = (a < b) && (b != 0);
3 changes: 3 additions & 0 deletions testcases/non_bool_if_condition_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 cond = 1;

if (cond) cond = 0;
3 changes: 3 additions & 0 deletions testcases/non_bool_while_condition_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 i = 1;

while (i) i--;
5 changes: 5 additions & 0 deletions testcases/out_of_scope_use_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
i64 inner = 1;
}

i64 outer = inner;
6 changes: 6 additions & 0 deletions testcases/precedence_chain_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
u64 x = 2;
u64 y = 3;
u64 z = 4;

u64 result = x + y * z << 1;
bool check = result > 0 && x < y || false;
4 changes: 4 additions & 0 deletions testcases/relational_bool_equality_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
bool a = true;
bool b = false;
bool c = a == b;
bool d = a != b;
3 changes: 3 additions & 0 deletions testcases/relational_width_match_cast_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 a = 42;
i32 b = 7;
bool c = a > (b as i64);
9 changes: 9 additions & 0 deletions testcases/scope_shadowing_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
i64 value = 10;
i64 result = value;

{
i64 value = 20;
result = value;
}

result = value;
1 change: 1 addition & 0 deletions testcases/semantic_bool_to_int_assignment_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i64 x = true;
2 changes: 2 additions & 0 deletions testcases/semantic_decrement_bool_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bool x = true;
--x;
1 change: 1 addition & 0 deletions testcases/semantic_division_by_zero_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i64 x = 10 / 0;
2 changes: 2 additions & 0 deletions testcases/semantic_increment_bool_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bool x = true;
x++;
3 changes: 3 additions & 0 deletions testcases/semantic_int_bool_binary_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 a = 1;
bool b = true;
i64 c = a + b;
1 change: 1 addition & 0 deletions testcases/semantic_int_to_bool_assignment_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bool x = 1;
2 changes: 2 additions & 0 deletions testcases/semantic_invalid_cast_bool_to_u8_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bool x = true;
u8 y = x as u8;
2 changes: 2 additions & 0 deletions testcases/semantic_invalid_cast_int_to_bool_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i64 x = 1;
bool y = x as bool;
1 change: 1 addition & 0 deletions testcases/semantic_logical_int_operands_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bool x = 1 && 0;
1 change: 1 addition & 0 deletions testcases/semantic_negative_unsigned_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
u8 x = -1;
3 changes: 3 additions & 0 deletions testcases/semantic_relational_group_mismatch_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 a = 1;
u64 b = 2;
bool c = a < b;
3 changes: 3 additions & 0 deletions testcases/semantic_relational_width_mismatch_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i8 a = 1;
i16 b = 2;
bool c = a < b;
2 changes: 2 additions & 0 deletions testcases/semantic_shift_left_out_of_range_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
u8 x = 1;
u8 y = x << 8;
2 changes: 2 additions & 0 deletions testcases/semantic_shift_right_out_of_range_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
u8 x = 1;
u8 y = x >> 8;
3 changes: 3 additions & 0 deletions testcases/semantic_signed_unsigned_binary_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
i64 a = 1;
u64 b = 2;
i64 c = a + b;
1 change: 1 addition & 0 deletions testcases/semantic_undeclared_assignment_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
x = 1;
4 changes: 4 additions & 0 deletions testcases/semantic_uninitialized_if_condition_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
bool cond;
if (cond) {
i64 x = 1;
}
2 changes: 2 additions & 0 deletions testcases/semantic_uninitialized_rhs_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i64 x;
i64 y = x;
4 changes: 4 additions & 0 deletions testcases/semantic_uninitialized_while_condition_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
bool cond;
while (cond) {
i64 x = 1;
}
3 changes: 3 additions & 0 deletions testcases/shift_edge_valid_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 x = 1;
x = x << 63;
x = x >> 63;
3 changes: 3 additions & 0 deletions testcases/shift_variable_amount_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
u64 x = 128;
u64 s = 3;
u64 y = x >> s;
2 changes: 2 additions & 0 deletions testcases/symbol_redefinition_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i64 x = 1;
i64 x = 2;
1 change: 1 addition & 0 deletions testcases/syntax_cast_missing_type_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
u64 x = 1 as ;
1 change: 1 addition & 0 deletions testcases/syntax_declaration_missing_identifier_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i64 = 1;
3 changes: 3 additions & 0 deletions testcases/syntax_else_without_if_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
else {
i64 x = 1;
}
1 change: 1 addition & 0 deletions testcases/syntax_empty_paren_expr_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
();
1 change: 1 addition & 0 deletions testcases/syntax_expression_missing_operand_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
u64 x = 1 + ;
3 changes: 3 additions & 0 deletions testcases/syntax_missing_lparen_if_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
if true) {
i64 x = 1;
}
2 changes: 2 additions & 0 deletions testcases/syntax_missing_rbrace_block_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{
i64 x = 1;
3 changes: 3 additions & 0 deletions testcases/syntax_missing_rparen_if_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
if (true {
i64 x = 1;
}
3 changes: 3 additions & 0 deletions testcases/syntax_missing_rparen_while_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
while (true {
i64 x = 1;
}
2 changes: 2 additions & 0 deletions testcases/syntax_missing_semicolon_assign_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i64 x = 0;
x = 2
1 change: 1 addition & 0 deletions testcases/syntax_missing_semicolon_decl_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
i64 x = 10
1 change: 1 addition & 0 deletions testcases/syntax_missing_semicolon_expr_fail.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(1 + 2)
2 changes: 2 additions & 0 deletions testcases/unary_chain_not_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bool a = true;
bool b = !!a;
2 changes: 2 additions & 0 deletions testcases/unary_not_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bool done = false;
bool check = !done;
2 changes: 2 additions & 0 deletions testcases/unary_postfix_expression_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i64 x = 10;
i64 y = x++;
2 changes: 2 additions & 0 deletions testcases/unary_prefix_expression_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
i64 x = 10;
i64 y = ++x;
6 changes: 6 additions & 0 deletions testcases/unary_updates_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
u64 i = 10;

++i;
i++;
--i;
i--;
7 changes: 7 additions & 0 deletions testcases/while_block_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
u64 i = 0;
u64 total = 0;

while (i < 4) {
total += i;
i++;
}
6 changes: 6 additions & 0 deletions testcases/while_condition_not_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
bool run = true;
u64 i = 0;
while (!(!run)) {
i++;
run = false;
}
8 changes: 8 additions & 0 deletions testcases/while_nested_block_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
u64 i = 0;
u64 sum = 0;
while (i < 5) {
{
sum += i;
}
i++;
}
10 changes: 10 additions & 0 deletions testcases/while_with_if_else_pass.slfr
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
u64 i = 0;
u64 even_count = 0;
while (i < 6) {
if ((i & 1) == 0) {
even_count++;
} else {
even_count += 0;
}
i++;
}
Loading