diff options
115 files changed, 458 insertions, 459 deletions
diff --git a/progs/tests/add.sy b/progs/tests/add.sy new file mode 100644 index 0000000..3fadd86 --- /dev/null +++ b/progs/tests/add.sy @@ -0,0 +1,3 @@ +start :: fn { + (1, 2, 3, 4) + (4, 3, 2, 1) <=> (5, 5, 5, 5) +} diff --git a/progs/tests/advanced_break.sy b/progs/tests/advanced_break.sy new file mode 100644 index 0000000..591dffd --- /dev/null +++ b/progs/tests/advanced_break.sy @@ -0,0 +1,22 @@ +start :: fn { + + a := 0 + for i := 0, i < 10, i += 1 { + q := 0 + qq := 0 + qqq := 0 + qqqq := 0 + + a = a + 1 + if i == 2 { + break + } + + q + qq + qqq + qqqq + } + a <=> 3 + +} diff --git a/progs/tests/advanced_continue.sy b/progs/tests/advanced_continue.sy new file mode 100644 index 0000000..1a3bb00 --- /dev/null +++ b/progs/tests/advanced_continue.sy @@ -0,0 +1,22 @@ +start :: fn { + + a := 0 + for i := 0, i < 4, i += 1 { + q := 0 + qq := 0 + qqq := 0 + qqqq := 0 + + if i == 2 { + continue + } + a = a + 1 + + q + qq + qqq + qqqq + } + a <=> 3 + +} diff --git a/progs/tests/assignment.sy b/progs/tests/assignment.sy new file mode 100644 index 0000000..5ab9f6b --- /dev/null +++ b/progs/tests/assignment.sy @@ -0,0 +1,7 @@ +start :: fn { + a := 1 + b := 2 + a = b + a <=> 2 + b <=> 2 +} diff --git a/progs/tests/auto/add.sy b/progs/tests/auto/add.sy deleted file mode 100644 index 4e8e643..0000000 --- a/progs/tests/auto/add.sy +++ /dev/null @@ -1,3 +0,0 @@ -start :: fn { -(1, 2, 3, 4) + (4, 3, 2, 1) <=> (5, 5, 5, 5) -} diff --git a/progs/tests/auto/advanced_break.sy b/progs/tests/auto/advanced_break.sy deleted file mode 100644 index 1cfcece..0000000 --- a/progs/tests/auto/advanced_break.sy +++ /dev/null @@ -1,22 +0,0 @@ -start :: fn { - -a := 0 -for i := 0, i < 10, i += 1 { - q := 0 - qq := 0 - qqq := 0 - qqqq := 0 - - a = a + 1 - if i == 2 { - break - } - - q - qq - qqq - qqqq -} -a <=> 3 - -} diff --git a/progs/tests/auto/advanced_continue.sy b/progs/tests/auto/advanced_continue.sy deleted file mode 100644 index 70a8671..0000000 --- a/progs/tests/auto/advanced_continue.sy +++ /dev/null @@ -1,22 +0,0 @@ -start :: fn { - -a := 0 -for i := 0, i < 4, i += 1 { - q := 0 - qq := 0 - qqq := 0 - qqqq := 0 - - if i == 2 { - continue - } - a = a + 1 - - q - qq - qqq - qqqq -} -a <=> 3 - -} diff --git a/progs/tests/auto/assignment.sy b/progs/tests/auto/assignment.sy deleted file mode 100644 index 51cbecc..0000000 --- a/progs/tests/auto/assignment.sy +++ /dev/null @@ -1,7 +0,0 @@ -start :: fn { -a := 1 - b := 2 - a = b - a <=> 2 - b <=> 2 -} diff --git a/progs/tests/auto/blob_complex.sy b/progs/tests/auto/blob_complex.sy deleted file mode 100644 index d40082f..0000000 --- a/progs/tests/auto/blob_complex.sy +++ /dev/null @@ -1,19 +0,0 @@ -start :: fn { - -a := A() -b := B() -c := C() -b2 := B() - -a -b -c -b2 - -blob A { - c: C -} -blob C { } -blob B { } - -} diff --git a/progs/tests/auto/blob_infer.sy b/progs/tests/auto/blob_infer.sy deleted file mode 100644 index cee18bf..0000000 --- a/progs/tests/auto/blob_infer.sy +++ /dev/null @@ -1,8 +0,0 @@ -start :: fn { - -blob A { } - -a : A = A() -a - -} diff --git a/progs/tests/auto/blob_simple.sy b/progs/tests/auto/blob_simple.sy deleted file mode 100644 index f05ec07..0000000 --- a/progs/tests/auto/blob_simple.sy +++ /dev/null @@ -1,10 +0,0 @@ -start :: fn { - -a := A() -a - -blob A { - a: int -} - -} diff --git a/progs/tests/auto/calls_inside_calls.sy b/progs/tests/auto/calls_inside_calls.sy deleted file mode 100644 index 578f418..0000000 --- a/progs/tests/auto/calls_inside_calls.sy +++ /dev/null @@ -1,11 +0,0 @@ -start :: fn { -one := fn -> int { - ret 1 - } - add := fn a: int, b: int -> int { - ret a + b - } - add(one(), one()) <=> 2 - add(add(one(), one()), one()) <=> 3 - add(one(), add(one(), one())) <=> 3 -} diff --git a/progs/tests/auto/cluster.sy b/progs/tests/auto/cluster.sy deleted file mode 100644 index 8f279e7..0000000 --- a/progs/tests/auto/cluster.sy +++ /dev/null @@ -1,14 +0,0 @@ -start :: fn { - -blob A { a: int } -a := A() -a.a = 0 -a.a += 1 -a.a <=> 1 -a.a *= 2 -a.a <=> 2 -a.a /= 2 -a.a <=> 1 -a.a -= 1 -a.a <=> 0 -} diff --git a/progs/tests/auto/compare_constants_equality.sy b/progs/tests/auto/compare_constants_equality.sy deleted file mode 100644 index c8c399b..0000000 --- a/progs/tests/auto/compare_constants_equality.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -if 1 == 2 { - <!> - } -} diff --git a/progs/tests/auto/compare_constants_unequality.sy b/progs/tests/auto/compare_constants_unequality.sy deleted file mode 100644 index 8c115b4..0000000 --- a/progs/tests/auto/compare_constants_unequality.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -if 1 != 1 { - <!> - } -} diff --git a/progs/tests/auto/compare_variable.sy b/progs/tests/auto/compare_variable.sy deleted file mode 100644 index 25d21f4..0000000 --- a/progs/tests/auto/compare_variable.sy +++ /dev/null @@ -1,9 +0,0 @@ -start :: fn { -a := 1 - if a == 0 { - <!> - } - if a != 1 { - <!> - } -} diff --git a/progs/tests/auto/constants_in_inner_functions.sy b/progs/tests/auto/constants_in_inner_functions.sy deleted file mode 100644 index 3371393..0000000 --- a/progs/tests/auto/constants_in_inner_functions.sy +++ /dev/null @@ -1,20 +0,0 @@ -start :: fn { - -q : int = 0 - -f :: fn -> fn -> { - g :: fn { - q += 1 - } - ret g -} - -g := f() -g() -q <=> 1 -g() -q <=> 2 -g() -q <=> 3 - -} diff --git a/progs/tests/auto/div.sy b/progs/tests/auto/div.sy deleted file mode 100644 index 3073270..0000000 --- a/progs/tests/auto/div.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -a := 2 -a /= 2 -a <=> 1 -} diff --git a/progs/tests/auto/else_.sy b/progs/tests/auto/else_.sy deleted file mode 100644 index 896aeb4..0000000 --- a/progs/tests/auto/else_.sy +++ /dev/null @@ -1,10 +0,0 @@ -start :: fn { -a := 1 - res := 0 - if a == 0 { - <!> - } else { - res = 1 - } - res <=> 1 -} diff --git a/progs/tests/auto/else_if.sy b/progs/tests/auto/else_if.sy deleted file mode 100644 index 18b64f6..0000000 --- a/progs/tests/auto/else_if.sy +++ /dev/null @@ -1,12 +0,0 @@ -start :: fn { -a := 1 - res := 0 - if a == 0 { - <!> - } else if a == 1 { - res = 1 - } else { - <!> - } - res <=> 1 -} diff --git a/progs/tests/auto/expressions.sy b/progs/tests/auto/expressions.sy deleted file mode 100644 index 0f6d6fc..0000000 --- a/progs/tests/auto/expressions.sy +++ /dev/null @@ -1,6 +0,0 @@ -start :: fn { -1 + 1 // blargh - 2 // blargh - // HARGH - -} diff --git a/progs/tests/auto/field.sy b/progs/tests/auto/field.sy deleted file mode 100644 index c985297..0000000 --- a/progs/tests/auto/field.sy +++ /dev/null @@ -1,3 +0,0 @@ -start :: fn { -blob A { a: int } -} diff --git a/progs/tests/auto/field_assign.sy b/progs/tests/auto/field_assign.sy deleted file mode 100644 index 93837ea..0000000 --- a/progs/tests/auto/field_assign.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -blob A { a: int } - a := A() - a.a = 2 -} diff --git a/progs/tests/auto/field_get.sy b/progs/tests/auto/field_get.sy deleted file mode 100644 index 0905f6f..0000000 --- a/progs/tests/auto/field_get.sy +++ /dev/null @@ -1,7 +0,0 @@ -start :: fn { -blob A { a: int } - a := A() - a.a = 2 - a.a <=> 2 - 2 <=> a.a -} diff --git a/progs/tests/auto/in_rhs.sy b/progs/tests/auto/in_rhs.sy deleted file mode 100644 index 60e4873..0000000 --- a/progs/tests/auto/in_rhs.sy +++ /dev/null @@ -1,3 +0,0 @@ -start :: fn { -5 <=> 1 * 2 + 3 -} diff --git a/progs/tests/auto/instantiate.sy b/progs/tests/auto/instantiate.sy deleted file mode 100644 index 7d32bf9..0000000 --- a/progs/tests/auto/instantiate.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -blob A {} - a := A() - a -} diff --git a/progs/tests/auto/more_types.sy b/progs/tests/auto/more_types.sy deleted file mode 100644 index 18d825e..0000000 --- a/progs/tests/auto/more_types.sy +++ /dev/null @@ -1,4 +0,0 @@ -start :: fn { -a: (str, bool, int) = ("abc", true, 1) -a -} diff --git a/progs/tests/auto/mul.sy b/progs/tests/auto/mul.sy deleted file mode 100644 index 78cc14e..0000000 --- a/progs/tests/auto/mul.sy +++ /dev/null @@ -1,3 +0,0 @@ -start :: fn { -(0, 1, 2) * (2, 3, 4) <=> (0, 3, 8) -} diff --git a/progs/tests/auto/multiple_fields.sy b/progs/tests/auto/multiple_fields.sy deleted file mode 100644 index 2a4b3c0..0000000 --- a/progs/tests/auto/multiple_fields.sy +++ /dev/null @@ -1,11 +0,0 @@ -start :: fn { -blob A { - a: int - b: int - } - a := A() - a.a = 2 - a.b = 3 - a.a + a.b <=> 5 - 5 <=> a.a + a.b -} diff --git a/progs/tests/auto/multiple_returns.sy b/progs/tests/auto/multiple_returns.sy deleted file mode 100644 index 8abc000..0000000 --- a/progs/tests/auto/multiple_returns.sy +++ /dev/null @@ -1,12 +0,0 @@ -start :: fn { -f := fn a: int -> int { - if a == 1 { - ret 2 - } else { - ret 3 - } - } - f(0) <=> 3 - f(1) <=> 2 - f(2) <=> 3 -} diff --git a/progs/tests/auto/negation.sy b/progs/tests/auto/negation.sy deleted file mode 100644 index 41388d8..0000000 --- a/progs/tests/auto/negation.sy +++ /dev/null @@ -1,7 +0,0 @@ -start :: fn { --1 <=> 0 - 1 - -1 + 2 <=> 1 - -(1 + 2) <=> -3 - 1 + -1 <=> 0 - 2 * -1 <=> -2 -} diff --git a/progs/tests/auto/not.sy b/progs/tests/auto/not.sy deleted file mode 100644 index 712690a..0000000 --- a/progs/tests/auto/not.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -f := fn {} - f! - -} diff --git a/progs/tests/auto/one_arg.sy b/progs/tests/auto/one_arg.sy deleted file mode 100644 index 9523a67..0000000 --- a/progs/tests/auto/one_arg.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -f := fn a:int { a <=> 1 } - f! 1 - -} diff --git a/progs/tests/auto/param_1.sy b/progs/tests/auto/param_1.sy deleted file mode 100644 index 1781eaf..0000000 --- a/progs/tests/auto/param_1.sy +++ /dev/null @@ -1,4 +0,0 @@ -start :: fn { -f := fn a: int {} - f(1) -} diff --git a/progs/tests/auto/param_2.sy b/progs/tests/auto/param_2.sy deleted file mode 100644 index ac5fdfd..0000000 --- a/progs/tests/auto/param_2.sy +++ /dev/null @@ -1,7 +0,0 @@ -start :: fn { -add := fn a: int, b: int -> int { - ret a + b - } - add(1, 1) <=> 2 - add(10, 20) <=> 30 -} diff --git a/progs/tests/auto/param_and_return.sy b/progs/tests/auto/param_and_return.sy deleted file mode 100644 index 7e39775..0000000 --- a/progs/tests/auto/param_and_return.sy +++ /dev/null @@ -1,7 +0,0 @@ -start :: fn { -f := fn a: int -> int { - ret a * 2 - } - f(1) <=> 2 - f(5) <=> 10 -} diff --git a/progs/tests/auto/parenthesis.sy b/progs/tests/auto/parenthesis.sy deleted file mode 100644 index b456769..0000000 --- a/progs/tests/auto/parenthesis.sy +++ /dev/null @@ -1,3 +0,0 @@ -start :: fn { -(1 + 2) * 3 <=> 9 -} diff --git a/progs/tests/auto/passing_functions.sy b/progs/tests/auto/passing_functions.sy deleted file mode 100644 index d1ff70e..0000000 --- a/progs/tests/auto/passing_functions.sy +++ /dev/null @@ -1,9 +0,0 @@ -start :: fn { -g := fn -> int { - ret 1 - } - f := fn inner: fn -> int -> int { - ret inner() - } - f(g) <=> 1 -} diff --git a/progs/tests/auto/passing_functions_mixed.sy b/progs/tests/auto/passing_functions_mixed.sy deleted file mode 100644 index 292e7ce..0000000 --- a/progs/tests/auto/passing_functions_mixed.sy +++ /dev/null @@ -1,9 +0,0 @@ -start :: fn { -g := fn a: int -> int { - ret a * 2 - } - f := fn inner: fn int -> int, a: int -> int { - ret inner(a) - } - f(g, 2) <=> 4 -} diff --git a/progs/tests/auto/precedence.sy b/progs/tests/auto/precedence.sy deleted file mode 100644 index 0aee658..0000000 --- a/progs/tests/auto/precedence.sy +++ /dev/null @@ -1,8 +0,0 @@ -start :: fn { -f := fn a: int, b: int -> int { - ret a + b - } - 1 + f(2, 3) <=> 6 - 2 * f(2, 3) <=> 10 - f(2, 3) - (2 + 3) <=> 0 -} diff --git a/progs/tests/auto/return_1.sy b/progs/tests/auto/return_1.sy deleted file mode 100644 index 993f9fd..0000000 --- a/progs/tests/auto/return_1.sy +++ /dev/null @@ -1,6 +0,0 @@ -start :: fn { -f := fn -> int { - ret 1 - } - f() <=> 1 -} diff --git a/progs/tests/auto/returning_closures.sy b/progs/tests/auto/returning_closures.sy deleted file mode 100644 index 1c4c091..0000000 --- a/progs/tests/auto/returning_closures.sy +++ /dev/null @@ -1,24 +0,0 @@ -start :: fn { - -f : fn -> fn -> int = fn -> fn -> int { - x : int = 0 - f := fn -> int { - x = x + 1 - ret x - } - f() <=> 1 - ret f -} - -a := f() -b := f() - -a() <=> 2 -a() <=> 3 - -b() <=> 2 -b() <=> 3 - -a() <=> 4 - -} diff --git a/progs/tests/auto/simple_add.sy b/progs/tests/auto/simple_add.sy deleted file mode 100644 index f1952d3..0000000 --- a/progs/tests/auto/simple_add.sy +++ /dev/null @@ -1,9 +0,0 @@ -start :: fn { - -a := 0 -b := 99999 -a += 1 -a <=> 1 -b <=> 99999 - -} diff --git a/progs/tests/auto/simple_break.sy b/progs/tests/auto/simple_break.sy deleted file mode 100644 index 11c06ad..0000000 --- a/progs/tests/auto/simple_break.sy +++ /dev/null @@ -1,12 +0,0 @@ -start :: fn { - -a := 0 -for i := 0, i < 10, i += 1 { - a = a + 1 - if i == 2 { - break - } -} -a <=> 3 - -} diff --git a/progs/tests/auto/simple_continue.sy b/progs/tests/auto/simple_continue.sy deleted file mode 100644 index ac2bf81..0000000 --- a/progs/tests/auto/simple_continue.sy +++ /dev/null @@ -1,12 +0,0 @@ -start :: fn { - -a := 0 -for i := 0, i < 4, i += 1 { - if i == 2 { - continue - } - a = a + 1 -} -a <=> 3 - -} diff --git a/progs/tests/auto/simple_sub.sy b/progs/tests/auto/simple_sub.sy deleted file mode 100644 index 5dad340..0000000 --- a/progs/tests/auto/simple_sub.sy +++ /dev/null @@ -1,9 +0,0 @@ -start :: fn { - -a := 0 -b := 99999 -a -= 1 -a <=> -1 -b <=> 99999 - -} diff --git a/progs/tests/auto/simplest.sy b/progs/tests/auto/simplest.sy deleted file mode 100644 index 5669dc0..0000000 --- a/progs/tests/auto/simplest.sy +++ /dev/null @@ -1,4 +0,0 @@ -start :: fn { -f := fn {} - f() -} diff --git a/progs/tests/auto/single_variable.sy b/progs/tests/auto/single_variable.sy deleted file mode 100644 index 00217d2..0000000 --- a/progs/tests/auto/single_variable.sy +++ /dev/null @@ -1,4 +0,0 @@ -start :: fn { -a := 1 - a <=> 1 -} diff --git a/progs/tests/auto/stack_ordering.sy b/progs/tests/auto/stack_ordering.sy deleted file mode 100644 index 85a36bd..0000000 --- a/progs/tests/auto/stack_ordering.sy +++ /dev/null @@ -1,6 +0,0 @@ -start :: fn { -a := 1 - b := 2 - b <=> 2 - a <=> 1 -} diff --git a/progs/tests/auto/strange.sy b/progs/tests/auto/strange.sy deleted file mode 100644 index c495041..0000000 --- a/progs/tests/auto/strange.sy +++ /dev/null @@ -1,15 +0,0 @@ -start :: fn { - -a := 0 -{ - b := 99999 - { - a := 99999 - a - } - b - a -= 1 -} -a <=> -1 - -} diff --git a/progs/tests/auto/sub.sy b/progs/tests/auto/sub.sy deleted file mode 100644 index 755ae67..0000000 --- a/progs/tests/auto/sub.sy +++ /dev/null @@ -1,3 +0,0 @@ -start :: fn { -(1, -2, 3, -4) - (4, 3, -2, -1) <=> (-3, 1, 1, -5) -} diff --git a/progs/tests/auto/terms_and_factors.sy b/progs/tests/auto/terms_and_factors.sy deleted file mode 100644 index 1fef724..0000000 --- a/progs/tests/auto/terms_and_factors.sy +++ /dev/null @@ -1,4 +0,0 @@ -start :: fn { -1 + 1 * 2 <=> 3 - 1 * 2 + 3 <=> 5 -} diff --git a/progs/tests/auto/three_arg.sy b/progs/tests/auto/three_arg.sy deleted file mode 100644 index d948fa0..0000000 --- a/progs/tests/auto/three_arg.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -f := fn a:int, b:int, c:int { c <=> 13 } - f! 1, 1 + 2, 1 + 4 * 3 - -} diff --git a/progs/tests/auto/two_arg.sy b/progs/tests/auto/two_arg.sy deleted file mode 100644 index 60645b5..0000000 --- a/progs/tests/auto/two_arg.sy +++ /dev/null @@ -1,5 +0,0 @@ -start :: fn { -f := fn a:int, b:int { b <=> 3 } - f! 1, 1 + 2 - -} diff --git a/progs/tests/auto/two_variables.sy b/progs/tests/auto/two_variables.sy deleted file mode 100644 index 9ae183f..0000000 --- a/progs/tests/auto/two_variables.sy +++ /dev/null @@ -1,6 +0,0 @@ -start :: fn { -a := 1 - b := 2 - a <=> 1 - b <=> 2 -} diff --git a/progs/tests/auto/types.sy b/progs/tests/auto/types.sy deleted file mode 100644 index c045b34..0000000 --- a/progs/tests/auto/types.sy +++ /dev/null @@ -1,4 +0,0 @@ -start :: fn { -a: (int, float, int) = (1, 1., 1) -a -} diff --git a/progs/tests/auto/uncallable_type.sy b/progs/tests/auto/uncallable_type.sy deleted file mode 100644 index 06ff71a..0000000 --- a/progs/tests/auto/uncallable_type.sy +++ /dev/null @@ -1,9 +0,0 @@ -start :: fn { - - f := fn i: int { - i() - } - f -} - -// errors: [ErrorKind::InvalidProgram] diff --git a/progs/tests/blob_complex.sy b/progs/tests/blob_complex.sy new file mode 100644 index 0000000..b139a3a --- /dev/null +++ b/progs/tests/blob_complex.sy @@ -0,0 +1,19 @@ +start :: fn { + + a := A() + b := B() + c := C() + b2 := B() + + a + b + c + b2 + + blob A { + c: C + } + blob C { } + blob B { } + +} diff --git a/progs/tests/blob_infer.sy b/progs/tests/blob_infer.sy new file mode 100644 index 0000000..0a1ce1b --- /dev/null +++ b/progs/tests/blob_infer.sy @@ -0,0 +1,8 @@ +start :: fn { + + blob A { } + + a : A = A() + a + +} diff --git a/progs/tests/blob_simple.sy b/progs/tests/blob_simple.sy new file mode 100644 index 0000000..ea832cd --- /dev/null +++ b/progs/tests/blob_simple.sy @@ -0,0 +1,10 @@ +start :: fn { + + a := A() + a + + blob A { + a: int + } + +} diff --git a/progs/tests/calls_inside_calls.sy b/progs/tests/calls_inside_calls.sy new file mode 100644 index 0000000..5f6716b --- /dev/null +++ b/progs/tests/calls_inside_calls.sy @@ -0,0 +1,11 @@ +start :: fn { + one := fn -> int { + ret 1 + } + add := fn a: int, b: int -> int { + ret a + b + } + add(one(), one()) <=> 2 + add(add(one(), one()), one()) <=> 3 + add(one(), add(one(), one())) <=> 3 +} diff --git a/progs/tests/cluster.sy b/progs/tests/cluster.sy new file mode 100644 index 0000000..dc8ec72 --- /dev/null +++ b/progs/tests/cluster.sy @@ -0,0 +1,14 @@ +start :: fn { + + blob A { a: int } + a := A() + a.a = 0 + a.a += 1 + a.a <=> 1 + a.a *= 2 + a.a <=> 2 + a.a /= 2 + a.a <=> 1 + a.a -= 1 + a.a <=> 0 +} diff --git a/progs/tests/compare_constants_equality.sy b/progs/tests/compare_constants_equality.sy new file mode 100644 index 0000000..e8f64ed --- /dev/null +++ b/progs/tests/compare_constants_equality.sy @@ -0,0 +1,5 @@ +start :: fn { + if 1 == 2 { + <!> + } +} diff --git a/progs/tests/compare_constants_unequality.sy b/progs/tests/compare_constants_unequality.sy new file mode 100644 index 0000000..21094da --- /dev/null +++ b/progs/tests/compare_constants_unequality.sy @@ -0,0 +1,5 @@ +start :: fn { + if 1 != 1 { + <!> + } +} diff --git a/progs/tests/compare_variable.sy b/progs/tests/compare_variable.sy new file mode 100644 index 0000000..80fb4a4 --- /dev/null +++ b/progs/tests/compare_variable.sy @@ -0,0 +1,9 @@ +start :: fn { + a := 1 + if a == 0 { + <!> + } + if a != 1 { + <!> + } +} diff --git a/progs/tests/auto/conflict_markers.sy b/progs/tests/conflict_markers.sy index 167a751..0760582 100644 --- a/progs/tests/auto/conflict_markers.sy +++ b/progs/tests/conflict_markers.sy @@ -1,9 +1,9 @@ start :: fn { <<<<<<< HEAD -print extern_test(4.0) + print extern_test(4.0) ======= -print extern_test(5.0) + print extern_test(5.0) >>>>>>> 2 } diff --git a/progs/tests/auto/constant_function.sy b/progs/tests/constant_function.sy index 2ec4019..22ddfe2 100644 --- a/progs/tests/auto/constant_function.sy +++ b/progs/tests/constant_function.sy @@ -1,4 +1,4 @@ a :: fn {} start :: fn { - a() + a() } diff --git a/progs/tests/auto/constant_function_closure.sy b/progs/tests/constant_function_closure.sy index 6c7f0d7..6c7f0d7 100644 --- a/progs/tests/auto/constant_function_closure.sy +++ b/progs/tests/constant_function_closure.sy diff --git a/progs/tests/auto/constant_function_complex.sy b/progs/tests/constant_function_complex.sy index 6a60ebe..6a60ebe 100644 --- a/progs/tests/auto/constant_function_complex.sy +++ b/progs/tests/constant_function_complex.sy diff --git a/progs/tests/constants_in_inner_functions.sy b/progs/tests/constants_in_inner_functions.sy new file mode 100644 index 0000000..99704e7 --- /dev/null +++ b/progs/tests/constants_in_inner_functions.sy @@ -0,0 +1,20 @@ +start :: fn { + + q : int = 0 + + f :: fn -> fn -> { + g :: fn { + q += 1 + } + ret g + } + + g := f() + g() + q <=> 1 + g() + q <=> 2 + g() + q <=> 3 + +} diff --git a/progs/tests/div.sy b/progs/tests/div.sy new file mode 100644 index 0000000..df3e7bb --- /dev/null +++ b/progs/tests/div.sy @@ -0,0 +1,5 @@ +start :: fn { + a := 2 + a /= 2 + a <=> 1 +} diff --git a/progs/tests/else_.sy b/progs/tests/else_.sy new file mode 100644 index 0000000..0f1d624 --- /dev/null +++ b/progs/tests/else_.sy @@ -0,0 +1,10 @@ +start :: fn { + a := 1 + res := 0 + if a == 0 { + <!> + } else { + res = 1 + } + res <=> 1 +} diff --git a/progs/tests/else_if.sy b/progs/tests/else_if.sy new file mode 100644 index 0000000..f31453e --- /dev/null +++ b/progs/tests/else_if.sy @@ -0,0 +1,12 @@ +start :: fn { + a := 1 + res := 0 + if a == 0 { + <!> + } else if a == 1 { + res = 1 + } else { + <!> + } + res <=> 1 +} diff --git a/progs/tests/expressions.sy b/progs/tests/expressions.sy new file mode 100644 index 0000000..99569e4 --- /dev/null +++ b/progs/tests/expressions.sy @@ -0,0 +1,6 @@ +start :: fn { + 1 + 1 // blargh + 2 // blargh + // HARGH + +} diff --git a/progs/tests/auto/factorial.sy b/progs/tests/factorial.sy index 770bc33..770bc33 100644 --- a/progs/tests/auto/factorial.sy +++ b/progs/tests/factorial.sy diff --git a/progs/tests/field.sy b/progs/tests/field.sy new file mode 100644 index 0000000..b11e51e --- /dev/null +++ b/progs/tests/field.sy @@ -0,0 +1,3 @@ +start :: fn { + blob A { a: int } +} diff --git a/progs/tests/field_assign.sy b/progs/tests/field_assign.sy new file mode 100644 index 0000000..4fb6dd4 --- /dev/null +++ b/progs/tests/field_assign.sy @@ -0,0 +1,5 @@ +start :: fn { + blob A { a: int } + a := A() + a.a = 2 +} diff --git a/progs/tests/field_get.sy b/progs/tests/field_get.sy new file mode 100644 index 0000000..49bb0f2 --- /dev/null +++ b/progs/tests/field_get.sy @@ -0,0 +1,7 @@ +start :: fn { + blob A { a: int } + a := A() + a.a = 2 + a.a <=> 2 + 2 <=> a.a +} diff --git a/progs/tests/in_rhs.sy b/progs/tests/in_rhs.sy new file mode 100644 index 0000000..28ed276 --- /dev/null +++ b/progs/tests/in_rhs.sy @@ -0,0 +1,3 @@ +start :: fn { + 5 <=> 1 * 2 + 3 +} diff --git a/progs/tests/instantiate.sy b/progs/tests/instantiate.sy new file mode 100644 index 0000000..bb2f09c --- /dev/null +++ b/progs/tests/instantiate.sy @@ -0,0 +1,5 @@ +start :: fn { + blob A {} + a := A() + a +} diff --git a/progs/tests/auto/invalid_assign.sy b/progs/tests/invalid_assign.sy index a8b18f0..8ee47ab 100644 --- a/progs/tests/auto/invalid_assign.sy +++ b/progs/tests/invalid_assign.sy @@ -1,7 +1,7 @@ start :: fn { -a := 1 -a = 0.1 -a + a := 1 + a = 0.1 + a } // errors: [ErrorKind::TypeMismatch(Type::Int, Type::Float)] diff --git a/progs/tests/more_types.sy b/progs/tests/more_types.sy new file mode 100644 index 0000000..c85403a --- /dev/null +++ b/progs/tests/more_types.sy @@ -0,0 +1,4 @@ +start :: fn { + a: (str, bool, int) = ("abc", true, 1) + a +} diff --git a/progs/tests/mul.sy b/progs/tests/mul.sy new file mode 100644 index 0000000..4b33314 --- /dev/null +++ b/progs/tests/mul.sy @@ -0,0 +1,3 @@ +start :: fn { + (0, 1, 2) * (2, 3, 4) <=> (0, 3, 8) +} diff --git a/progs/tests/multiple_fields.sy b/progs/tests/multiple_fields.sy new file mode 100644 index 0000000..ce4c61f --- /dev/null +++ b/progs/tests/multiple_fields.sy @@ -0,0 +1,11 @@ +start :: fn { + blob A { + a: int + b: int + } + a := A() + a.a = 2 + a.b = 3 + a.a + a.b <=> 5 + 5 <=> a.a + a.b +} diff --git a/progs/tests/multiple_returns.sy b/progs/tests/multiple_returns.sy new file mode 100644 index 0000000..6cb5e1a --- /dev/null +++ b/progs/tests/multiple_returns.sy @@ -0,0 +1,12 @@ +start :: fn { + f := fn a: int -> int { + if a == 1 { + ret 2 + } else { + ret 3 + } + } + f(0) <=> 3 + f(1) <=> 2 + f(2) <=> 3 +} diff --git a/progs/tests/negation.sy b/progs/tests/negation.sy new file mode 100644 index 0000000..0c702aa --- /dev/null +++ b/progs/tests/negation.sy @@ -0,0 +1,7 @@ +start :: fn { + -1 <=> 0 - 1 + -1 + 2 <=> 1 + -(1 + 2) <=> -3 + 1 + -1 <=> 0 + 2 * -1 <=> -2 +} diff --git a/progs/tests/not.sy b/progs/tests/not.sy new file mode 100644 index 0000000..02dd81d --- /dev/null +++ b/progs/tests/not.sy @@ -0,0 +1,5 @@ +start :: fn { + f := fn {} + f! + +} diff --git a/progs/tests/one_arg.sy b/progs/tests/one_arg.sy new file mode 100644 index 0000000..e7dee83 --- /dev/null +++ b/progs/tests/one_arg.sy @@ -0,0 +1,5 @@ +start :: fn { + f := fn a:int { a <=> 1 } + f! 1 + +} diff --git a/progs/tests/param_1.sy b/progs/tests/param_1.sy new file mode 100644 index 0000000..c96089e --- /dev/null +++ b/progs/tests/param_1.sy @@ -0,0 +1,4 @@ +start :: fn { + f := fn a: int {} + f(1) +} diff --git a/progs/tests/param_2.sy b/progs/tests/param_2.sy new file mode 100644 index 0000000..1915c42 --- /dev/null +++ b/progs/tests/param_2.sy @@ -0,0 +1,7 @@ +start :: fn { + add := fn a: int, b: int -> int { + ret a + b + } + add(1, 1) <=> 2 + add(10, 20) <=> 30 +} diff --git a/progs/tests/param_and_return.sy b/progs/tests/param_and_return.sy new file mode 100644 index 0000000..2752fcc --- /dev/null +++ b/progs/tests/param_and_return.sy @@ -0,0 +1,7 @@ +start :: fn { + f := fn a: int -> int { + ret a * 2 + } + f(1) <=> 2 + f(5) <=> 10 +} diff --git a/progs/tests/parenthesis.sy b/progs/tests/parenthesis.sy new file mode 100644 index 0000000..dd6fe8a --- /dev/null +++ b/progs/tests/parenthesis.sy @@ -0,0 +1,3 @@ +start :: fn { + (1 + 2) * 3 <=> 9 +} diff --git a/progs/tests/passing_functions.sy b/progs/tests/passing_functions.sy new file mode 100644 index 0000000..e09a125 --- /dev/null +++ b/progs/tests/passing_functions.sy @@ -0,0 +1,9 @@ +start :: fn { + g := fn -> int { + ret 1 + } + f := fn inner: fn -> int -> int { + ret inner() + } + f(g) <=> 1 +} diff --git a/progs/tests/passing_functions_mixed.sy b/progs/tests/passing_functions_mixed.sy new file mode 100644 index 0000000..b08128e --- /dev/null +++ b/progs/tests/passing_functions_mixed.sy @@ -0,0 +1,9 @@ +start :: fn { + g := fn a: int -> int { + ret a * 2 + } + f := fn inner: fn int -> int, a: int -> int { + ret inner(a) + } + f(g, 2) <=> 4 +} diff --git a/progs/tests/precedence.sy b/progs/tests/precedence.sy new file mode 100644 index 0000000..ae08e05 --- /dev/null +++ b/progs/tests/precedence.sy @@ -0,0 +1,8 @@ +start :: fn { + f := fn a: int, b: int -> int { + ret a + b + } + 1 + f(2, 3) <=> 6 + 2 * f(2, 3) <=> 10 + f(2, 3) - (2 + 3) <=> 0 +} diff --git a/progs/tests/return_1.sy b/progs/tests/return_1.sy new file mode 100644 index 0000000..533208f --- /dev/null +++ b/progs/tests/return_1.sy @@ -0,0 +1,6 @@ +start :: fn { + f := fn -> int { + ret 1 + } + f() <=> 1 +} diff --git a/progs/tests/returning_closures.sy b/progs/tests/returning_closures.sy new file mode 100644 index 0000000..4d69d5a --- /dev/null +++ b/progs/tests/returning_closures.sy @@ -0,0 +1,24 @@ +start :: fn { + + f : fn -> fn -> int = fn -> fn -> int { + x : int = 0 + f := fn -> int { + x = x + 1 + ret x + } + f() <=> 1 + ret f + } + + a := f() + b := f() + + a() <=> 2 + a() <=> 3 + + b() <=> 2 + b() <=> 3 + + a() <=> 4 + +} diff --git a/progs/tests/simple.sy b/progs/tests/simple.sy new file mode 100644 index 0000000..99bf586 --- /dev/null +++ b/progs/tests/simple.sy @@ -0,0 +1,10 @@ +start :: fn { + + a :: 1 + a <=> 1 + b := 2 + { + a <=> 1 + b <=> 2 + } +} diff --git a/progs/tests/simple_add.sy b/progs/tests/simple_add.sy new file mode 100644 index 0000000..7be4012 --- /dev/null +++ b/progs/tests/simple_add.sy @@ -0,0 +1,9 @@ +start :: fn { + + a := 0 + b := 99999 + a += 1 + a <=> 1 + b <=> 99999 + +} diff --git a/progs/tests/simple_break.sy b/progs/tests/simple_break.sy new file mode 100644 index 0000000..6f2e5b6 --- /dev/null +++ b/progs/tests/simple_break.sy @@ -0,0 +1,12 @@ +start :: fn { + + a := 0 + for i := 0, i < 10, i += 1 { + a = a + 1 + if i == 2 { + break + } + } + a <=> 3 + +} diff --git a/progs/tests/simple_continue.sy b/progs/tests/simple_continue.sy new file mode 100644 index 0000000..3e26e6c --- /dev/null +++ b/progs/tests/simple_continue.sy @@ -0,0 +1,12 @@ +start :: fn { + + a := 0 + for i := 0, i < 4, i += 1 { + if i == 2 { + continue + } + a = a + 1 + } + a <=> 3 + +} diff --git a/progs/tests/simple_sub.sy b/progs/tests/simple_sub.sy new file mode 100644 index 0000000..c220b8f --- /dev/null +++ b/progs/tests/simple_sub.sy @@ -0,0 +1,9 @@ +start :: fn { + + a := 0 + b := 99999 + a -= 1 + a <=> -1 + b <=> 99999 + +} diff --git a/progs/tests/simplest.sy b/progs/tests/simplest.sy new file mode 100644 index 0000000..14a6534 --- /dev/null +++ b/progs/tests/simplest.sy @@ -0,0 +1,4 @@ +start :: fn { + f := fn {} + f() +} diff --git a/progs/tests/single_variable.sy b/progs/tests/single_variable.sy new file mode 100644 index 0000000..ce4c2ad --- /dev/null +++ b/progs/tests/single_variable.sy @@ -0,0 +1,4 @@ +start :: fn { + a := 1 + a <=> 1 +} diff --git a/progs/tests/auto/simple.sy b/progs/tests/stack_ordering.sy index 436dcae..f13e5cf 100644 --- a/progs/tests/auto/simple.sy +++ b/progs/tests/stack_ordering.sy @@ -1,10 +1,6 @@ start :: fn { - -a :: 1 -a <=> 1 -b := 2 -{ - a <=> 1 + a := 1 + b := 2 b <=> 2 -} + a <=> 1 } diff --git a/progs/tests/strange.sy b/progs/tests/strange.sy new file mode 100644 index 0000000..b6aad0f --- /dev/null +++ b/progs/tests/strange.sy @@ -0,0 +1,15 @@ +start :: fn { + + a := 0 + { + b := 99999 + { + a := 99999 + a + } + b + a -= 1 + } + a <=> -1 + +} diff --git a/progs/tests/sub.sy b/progs/tests/sub.sy new file mode 100644 index 0000000..e5d60f2 --- /dev/null +++ b/progs/tests/sub.sy @@ -0,0 +1,3 @@ +start :: fn { + (1, -2, 3, -4) - (4, 3, -2, -1) <=> (-3, 1, 1, -5) +} diff --git a/progs/tests/terms_and_factors.sy b/progs/tests/terms_and_factors.sy new file mode 100644 index 0000000..42a48e2 --- /dev/null +++ b/progs/tests/terms_and_factors.sy @@ -0,0 +1,4 @@ +start :: fn { + 1 + 1 * 2 <=> 3 + 1 * 2 + 3 <=> 5 +} diff --git a/progs/tests/three_arg.sy b/progs/tests/three_arg.sy new file mode 100644 index 0000000..56eb634 --- /dev/null +++ b/progs/tests/three_arg.sy @@ -0,0 +1,5 @@ +start :: fn { + f := fn a:int, b:int, c:int { c <=> 13 } + f! 1, 1 + 2, 1 + 4 * 3 + +} diff --git a/progs/tests/two_arg.sy b/progs/tests/two_arg.sy new file mode 100644 index 0000000..09ea1f7 --- /dev/null +++ b/progs/tests/two_arg.sy @@ -0,0 +1,5 @@ +start :: fn { + f := fn a:int, b:int { b <=> 3 } + f! 1, 1 + 2 + +} diff --git a/progs/tests/two_variables.sy b/progs/tests/two_variables.sy new file mode 100644 index 0000000..93329e3 --- /dev/null +++ b/progs/tests/two_variables.sy @@ -0,0 +1,6 @@ +start :: fn { + a := 1 + b := 2 + a <=> 1 + b <=> 2 +} diff --git a/progs/tests/types.sy b/progs/tests/types.sy new file mode 100644 index 0000000..bdcdfa4 --- /dev/null +++ b/progs/tests/types.sy @@ -0,0 +1,4 @@ +start :: fn { + a: (int, float, int) = (1, 1., 1) + a +} diff --git a/progs/tests/uncallable_type.sy b/progs/tests/uncallable_type.sy new file mode 100644 index 0000000..dbe6e81 --- /dev/null +++ b/progs/tests/uncallable_type.sy @@ -0,0 +1,8 @@ +start :: fn { + f := fn i: int { + i() + } + f +} + +// errors: [ErrorKind::InvalidProgram] diff --git a/progs/tests/auto/wrong_params.sy b/progs/tests/wrong_params.sy index 6b56e90..e49e89b 100644 --- a/progs/tests/auto/wrong_params.sy +++ b/progs/tests/wrong_params.sy @@ -1,7 +1,7 @@ start :: fn { - f : fn -> int = fn a: int -> int {} -f + f : fn -> int = fn a: int -> int {} + f } // errors: [ErrorKind::TypeMismatch(_, _), ErrorKind::TypeMismatch(Type::Void, Type::Int)] diff --git a/progs/tests/auto/wrong_ret.sy b/progs/tests/wrong_ret.sy index 81f2517..6c4a9a5 100644 --- a/progs/tests/auto/wrong_ret.sy +++ b/progs/tests/wrong_ret.sy @@ -1,7 +1,7 @@ start :: fn { - f : fn -> int = fn {} -f + f : fn -> int = fn {} + f } // errors: [ErrorKind::TypeMismatch(_, _)] |
