aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/compilation.bad187
-rw-r--r--tests/logic-shortcircuit.bad16
-rw-r--r--tests/nested.bad18
-rw-r--r--tests/pointers.bad36
-rw-r--r--tests/recursion.bad19
5 files changed, 186 insertions, 90 deletions
diff --git a/tests/compilation.bad b/tests/compilation.bad
index ea467d2..49a5492 100644
--- a/tests/compilation.bad
+++ b/tests/compilation.bad
@@ -1,93 +1,100 @@
1fun adder(a: int): int { 1let a: Int = 32
2 ; a + 1 2let ptr = @a
3 4 3println("a " a)
4} 4println("ptr " ptr)
5adder(2) 5
6; let a = 1 6set ptr@ = 12
7; let b = 8 7println("a " a)
8 8println("ptr " ptr)
9; a + b 9
10; 1 + 2 10let ptr2 = @ptr
11; fun greet(name: str): nil { 11set ptr2@@ = 6
12; fun greet(name: str): nil { 12println("a " a)
13; println("hello ") 13println("ptr " ptr)
14; } 14
15 15; let a: Int = 32
16; greet("alex") 16; let b: Int = 64
17; greet("ding") 17; let ptr = @a
18; greet() 18; println("a " a)
19; if true { 19; println("b " b)
20; 1 20; println("ptr " ptr)
21; nil 21
22; } 22; println("ptr@ " ptr@)
23; let a = 1 23
24; let p = @a 24; { ; FIXME: This doesn't work yet
25; let arr: int[8] 25; set ptr@ = 12
26; set p[0] = 2 26; println(a)
27 27; println(b)
28; let b = p[0] 28; println(ptr)
29; println("a: " a)
30; println("b: " b)
31; let i = 0
32; while i < 8 {
33; set arr[i] = i
34; set i = i + 1
35; }
36; println("arr[0]: " arr[0])
37; println("arr[1]: " arr[1])
38
39; let arr: int[8]
40; set arr[1] = 2
41
42; let idx = 3
43; set arr[idx] = 3
44
45; println("arr[0]: " arr[0])
46; println("arr[1]: " arr[1])
47; println("arr[2]: " arr[2])
48; println("arr[3]: " arr[3])
49
50; arr[0] + arr[1] + arr[2] + arr[3]
51
52; set a = 2
53
54; let a = cond {
55; 1 == 1 = 42
56; 1 == 3 = 55
57; 1 == 1 = 66
58; else = 10
59; } 29; }
60 30
31; set ptr += 8
32; println(ptr@)
33
34; let a: Int = 32
35; let b: @Int = @a
36; let c = @a
37; let d = @c
38; let e = a + b@
39; let f = d@
40
41; println("a -> " a)
42; println("b -> " b)
43; println("c -> " c)
44; println("d -> " d)
45; println("e -> " e)
46; println("f -> " f)
47; println("b@ -> " b@)
48; println("d@ -> " d@)
49; println("d@@ -> " d@@)
50; println("a == b@ and a == d@@ -> " a == b@ and a == d@@)
51; println("b == c and c == d@ -> " b == c and c == d@)
52
53; println("b[0] " b[0])
54; println("c[0] " c[0])
55; println("d[0] " d[0])
56
57; let c = @a
58; let d = @c
59; let c: Int = a@ + 1
60; let c: @@Int = @b
61; let d: @@@Int = @c
62; let static_array: [24]Int
63; let fun_ptr: (Int Int : Int)
64
65; let a: U16 = 0x0afafafafafafafafafa
66; println(a)
67; let a: U32 = -2
68; ; let a: U32 = -2 + -1
69; let b: @U32 = @a
70; ; let a = "hello"
71; ; let b = a
72; set a = 1
73; let a = "hello"
74; let b = "world"
75
76; println(a)
77; println(b)
78
79; set b = a
80; set a = "WOOWOWO"
81
82; println(a)
83; println(b)
84
85; let a: S32[4]
86; set a[0] = 1
87; set a[1] = 2
88; set a[2] = 4
89; set a[3] = 8
90; let b = a
91; println(a[0] "--" a[1] "--" a[2] "--" a[3])
92; println(b[0] "--" b[1] "--" b[2] "--" b[3])
93
94; let a = 1 + 2
61; a 95; a
62 96; let sum_int_uint: U16 = -2 + 0x5
63; let a = 8 97; ; let sum_int_uint = -2
64; let b = 16 98; println(sum_int_uint)
65; let c = { 99; let varint: U16 = 0x0102030405060708
66; let a = 32 100; let varfloat: F32 = 1.0
67; a + 8
68; }
69
70; a + b + c
71
72; let a = 1
73; if false {
74; set a = 2
75; }
76; a
77
78; if true {
79; 1 + 2
80; } else {
81; 3 + 4
82; }
83
84; let a = 0
85; while a < 10 {
86; set a = a + 1
87; }
88
89; a
90
91; print(1)
92; println(1.0 + 2.0)
93; println("hello world " 1 " " 2.0 " wow!")
diff --git a/tests/logic-shortcircuit.bad b/tests/logic-shortcircuit.bad
new file mode 100644
index 0000000..a7e315e
--- /dev/null
+++ b/tests/logic-shortcircuit.bad
@@ -0,0 +1,16 @@
1fun ret_true(): Bool {
2 print("ret_true ")
3 true
4}
5
6fun ret_false(): Bool {
7 print("ret_false ")
8 false
9}
10
11println("test1: " ret_true() and ret_false() and ret_true())
12println("test2: " ret_true() and ret_true() and ret_true())
13println("test3: " ret_false() and ret_true() and ret_true())
14println("test4: " ret_false() or ret_true() or ret_false())
15println("test5: " ret_true() or ret_true() or ret_false())
16println("test6: " ret_true() and (ret_true() or ret_false()))
diff --git a/tests/nested.bad b/tests/nested.bad
new file mode 100644
index 0000000..75eb967
--- /dev/null
+++ b/tests/nested.bad
@@ -0,0 +1,18 @@
1fun printer() println("wowo!")
2
3let y = 4
4fun nested() {
5 fun adder(a: Int b: Int): Int {
6 fun printer() println("ho!")
7 printer()
8 printer()
9 printer()
10 y + a + b
11 }
12 for let i = 0, i < 2, set i += 1 {
13 println("i: " i " " adder(i, 2))
14 }
15}
16
17nested()
18printer()
diff --git a/tests/pointers.bad b/tests/pointers.bad
new file mode 100644
index 0000000..eda44b0
--- /dev/null
+++ b/tests/pointers.bad
@@ -0,0 +1,36 @@
1{
2 let a: Int = 32
3 let b: @Int = @a
4 let c = @a
5 let d = @c
6 let e = a + b@
7 let f = d@
8
9 println("a -> " a)
10 println("b -> " b)
11 println("c -> " c)
12 println("d -> " d)
13 println("e -> " e)
14 println("f -> " f)
15 println("b@ -> " b@)
16 println("d@ -> " d@)
17 println("d@@ -> " d@@)
18 println("a == b@ and a == d@@ -> " a == b@ and a == d@@)
19 println("b == c and c == d@ -> " b == c and c == d@)
20}
21
22{
23 let a: Int = 32
24 let ptr = @a
25 println("a " a)
26 println("ptr " ptr)
27
28 set ptr@ = 12
29 println("a " a)
30 println("ptr " ptr)
31
32 let ptr2 = @ptr
33 set ptr2@@ = 6
34 println("a " a)
35 println("ptr " ptr)
36}
diff --git a/tests/recursion.bad b/tests/recursion.bad
new file mode 100644
index 0000000..0ab7fa0
--- /dev/null
+++ b/tests/recursion.bad
@@ -0,0 +1,19 @@
1fun recur(num: UInt) {
2 println("NUM: " num)
3 if num == 0 return(nil)
4 recur2(num - 1)
5}
6
7fun recur2(num: Int) {
8 println("NUM: " num)
9 if num == 0 return(nil)
10 recur(num - 1)
11}
12
13recur(5)
14
15fun infrecur(msg: Str, num: Int) {
16 println("NUM: " msg " " num)
17 infrecur(msg num + 1)
18}
19infrecur(" -> " 8)