aboutsummaryrefslogtreecommitdiffstats
path: root/progs
diff options
context:
space:
mode:
Diffstat (limited to 'progs')
-rw-r--r--progs/tests/add.sy3
-rw-r--r--progs/tests/advanced_break.sy22
-rw-r--r--progs/tests/advanced_continue.sy22
-rw-r--r--progs/tests/assignment.sy7
-rw-r--r--progs/tests/auto/add.sy3
-rw-r--r--progs/tests/auto/advanced_break.sy22
-rw-r--r--progs/tests/auto/advanced_continue.sy22
-rw-r--r--progs/tests/auto/assignment.sy7
-rw-r--r--progs/tests/auto/blob_complex.sy19
-rw-r--r--progs/tests/auto/blob_infer.sy8
-rw-r--r--progs/tests/auto/blob_simple.sy10
-rw-r--r--progs/tests/auto/calls_inside_calls.sy11
-rw-r--r--progs/tests/auto/cluster.sy14
-rw-r--r--progs/tests/auto/compare_constants_equality.sy5
-rw-r--r--progs/tests/auto/compare_constants_unequality.sy5
-rw-r--r--progs/tests/auto/compare_variable.sy9
-rw-r--r--progs/tests/auto/constants_in_inner_functions.sy20
-rw-r--r--progs/tests/auto/div.sy5
-rw-r--r--progs/tests/auto/else_.sy10
-rw-r--r--progs/tests/auto/else_if.sy12
-rw-r--r--progs/tests/auto/expressions.sy6
-rw-r--r--progs/tests/auto/field.sy3
-rw-r--r--progs/tests/auto/field_assign.sy5
-rw-r--r--progs/tests/auto/field_get.sy7
-rw-r--r--progs/tests/auto/in_rhs.sy3
-rw-r--r--progs/tests/auto/instantiate.sy5
-rw-r--r--progs/tests/auto/more_types.sy4
-rw-r--r--progs/tests/auto/mul.sy3
-rw-r--r--progs/tests/auto/multiple_fields.sy11
-rw-r--r--progs/tests/auto/multiple_returns.sy12
-rw-r--r--progs/tests/auto/negation.sy7
-rw-r--r--progs/tests/auto/not.sy5
-rw-r--r--progs/tests/auto/one_arg.sy5
-rw-r--r--progs/tests/auto/param_1.sy4
-rw-r--r--progs/tests/auto/param_2.sy7
-rw-r--r--progs/tests/auto/param_and_return.sy7
-rw-r--r--progs/tests/auto/parenthesis.sy3
-rw-r--r--progs/tests/auto/passing_functions.sy9
-rw-r--r--progs/tests/auto/passing_functions_mixed.sy9
-rw-r--r--progs/tests/auto/precedence.sy8
-rw-r--r--progs/tests/auto/return_1.sy6
-rw-r--r--progs/tests/auto/returning_closures.sy24
-rw-r--r--progs/tests/auto/simple_add.sy9
-rw-r--r--progs/tests/auto/simple_break.sy12
-rw-r--r--progs/tests/auto/simple_continue.sy12
-rw-r--r--progs/tests/auto/simple_sub.sy9
-rw-r--r--progs/tests/auto/simplest.sy4
-rw-r--r--progs/tests/auto/single_variable.sy4
-rw-r--r--progs/tests/auto/stack_ordering.sy6
-rw-r--r--progs/tests/auto/strange.sy15
-rw-r--r--progs/tests/auto/sub.sy3
-rw-r--r--progs/tests/auto/terms_and_factors.sy4
-rw-r--r--progs/tests/auto/three_arg.sy5
-rw-r--r--progs/tests/auto/two_arg.sy5
-rw-r--r--progs/tests/auto/two_variables.sy6
-rw-r--r--progs/tests/auto/types.sy4
-rw-r--r--progs/tests/auto/uncallable_type.sy9
-rw-r--r--progs/tests/blob_complex.sy19
-rw-r--r--progs/tests/blob_infer.sy8
-rw-r--r--progs/tests/blob_simple.sy10
-rw-r--r--progs/tests/boolean_ops.sy56
-rw-r--r--progs/tests/boolean_order.sy42
-rw-r--r--progs/tests/calls_inside_calls.sy11
-rw-r--r--progs/tests/cluster.sy14
-rw-r--r--progs/tests/compare_constants_equality.sy5
-rw-r--r--progs/tests/compare_constants_unequality.sy5
-rw-r--r--progs/tests/compare_variable.sy9
-rw-r--r--progs/tests/conflict_markers.sy (renamed from progs/tests/auto/conflict_markers.sy)4
-rw-r--r--progs/tests/constant_function.sy (renamed from progs/tests/auto/constant_function.sy)2
-rw-r--r--progs/tests/constant_function_closure.sy (renamed from progs/tests/auto/constant_function_closure.sy)0
-rw-r--r--progs/tests/constant_function_complex.sy (renamed from progs/tests/auto/constant_function_complex.sy)0
-rw-r--r--progs/tests/constants_in_inner_functions.sy20
-rw-r--r--progs/tests/div.sy5
-rw-r--r--progs/tests/else_.sy10
-rw-r--r--progs/tests/else_if.sy12
-rw-r--r--progs/tests/expressions.sy6
-rw-r--r--progs/tests/factorial.sy (renamed from progs/tests/auto/factorial.sy)0
-rw-r--r--progs/tests/field.sy3
-rw-r--r--progs/tests/field_assign.sy5
-rw-r--r--progs/tests/field_get.sy7
-rw-r--r--progs/tests/in_rhs.sy3
-rw-r--r--progs/tests/instantiate.sy5
-rw-r--r--progs/tests/invalid_assign.sy (renamed from progs/tests/auto/invalid_assign.sy)6
-rw-r--r--progs/tests/more_types.sy4
-rw-r--r--progs/tests/mul.sy3
-rw-r--r--progs/tests/multiple_fields.sy11
-rw-r--r--progs/tests/multiple_returns.sy12
-rw-r--r--progs/tests/negation.sy7
-rw-r--r--progs/tests/not.sy5
-rw-r--r--progs/tests/one_arg.sy5
-rw-r--r--progs/tests/param_1.sy4
-rw-r--r--progs/tests/param_2.sy7
-rw-r--r--progs/tests/param_and_return.sy7
-rw-r--r--progs/tests/parenthesis.sy3
-rw-r--r--progs/tests/passing_functions.sy9
-rw-r--r--progs/tests/passing_functions_mixed.sy9
-rw-r--r--progs/tests/precedence.sy8
-rw-r--r--progs/tests/return_1.sy6
-rw-r--r--progs/tests/returning_closures.sy24
-rw-r--r--progs/tests/simple.sy10
-rw-r--r--progs/tests/simple_add.sy9
-rw-r--r--progs/tests/simple_break.sy12
-rw-r--r--progs/tests/simple_continue.sy12
-rw-r--r--progs/tests/simple_sub.sy9
-rw-r--r--progs/tests/simplest.sy4
-rw-r--r--progs/tests/single_variable.sy4
-rw-r--r--progs/tests/stack_ordering.sy (renamed from progs/tests/auto/simple.sy)10
-rw-r--r--progs/tests/strange.sy15
-rw-r--r--progs/tests/sub.sy3
-rw-r--r--progs/tests/terms_and_factors.sy4
-rw-r--r--progs/tests/three_arg.sy5
-rw-r--r--progs/tests/two_arg.sy5
-rw-r--r--progs/tests/two_variables.sy6
-rw-r--r--progs/tests/types.sy4
-rw-r--r--progs/tests/uncallable_type.sy8
-rw-r--r--progs/tests/wrong_params.sy (renamed from progs/tests/auto/wrong_params.sy)4
-rw-r--r--progs/tests/wrong_ret.sy (renamed from progs/tests/auto/wrong_ret.sy)4
117 files changed, 556 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/boolean_ops.sy b/progs/tests/boolean_ops.sy
new file mode 100644
index 0000000..368068b
--- /dev/null
+++ b/progs/tests/boolean_ops.sy
@@ -0,0 +1,56 @@
+start :: fn {
+ ts := 0
+ t :: fn -> bool {
+ ts += 1
+ ret true
+ }
+
+ fs := 0
+ f :: fn -> bool {
+ fs += 1
+ ret false
+ }
+
+ i :: fn -> bool {
+ <!>
+ ret false
+ }
+
+ if f() && i() {
+ <!>
+ }
+
+ if t() || i() {
+ // Empty
+ } else {
+ <!>
+ }
+
+ if f() && i() && i() {
+ <!>
+ }
+
+ if t() || i() || i() {
+ // Empty
+ } else {
+ <!>
+ }
+
+ fs <=> 2
+ ts <=> 2
+}
+
+
+
+ // if t() || i() && f() {
+ // // Empty
+ // } else {
+ // <!>
+ // }
+
+ // if f() && t() || i() {
+ // // Empty
+ // } else {
+ // <!>
+ // }
+
diff --git a/progs/tests/boolean_order.sy b/progs/tests/boolean_order.sy
new file mode 100644
index 0000000..ecec262
--- /dev/null
+++ b/progs/tests/boolean_order.sy
@@ -0,0 +1,42 @@
+start :: fn {
+ ts := 0
+ t :: fn -> bool {
+ ts += 1
+ ret true
+ }
+
+ fs := 0
+ f :: fn -> bool {
+ fs += 1
+ ret false
+ }
+
+ i :: fn -> bool {
+ <!>
+ ret false
+ }
+
+ if t() || i() && i() {
+ // Empty
+ } else {
+ <!>
+ }
+
+ if f() && i() || t() {
+ // Empty
+ } else {
+ <!>
+ }
+
+ fs <=> 1
+ fs = 0
+ ts <=> 2
+ ts = 0
+
+ f() && i() || f() <=> t() && f() || f()
+ f() && i() || f() <=> (t() && f()) || f()
+ t() && t() && f() || t() <=> t() || i() && i() && i()
+
+ fs <=> 9
+ ts <=> 6
+}
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(_, _)]