diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/compilation.bad | 259 | ||||
-rw-r--r-- | tests/conditionals.bad | 4 | ||||
-rw-r--r-- | tests/logic-shortcircuit.bad | 16 | ||||
-rw-r--r-- | tests/nested.bad | 18 | ||||
-rw-r--r-- | tests/pointers.bad | 65 | ||||
-rw-r--r-- | tests/recursion.bad | 19 | ||||
-rw-r--r-- | tests/semantics.bad | 7 | ||||
-rw-r--r-- | tests/sizeof.bad | 26 |
8 files changed, 382 insertions, 32 deletions
diff --git a/tests/compilation.bad b/tests/compilation.bad index 120c020..bd4ebbd 100644 --- a/tests/compilation.bad +++ b/tests/compilation.bad | |||
@@ -1,27 +1,234 @@ | |||
1 | let a = 8 | 1 | let a: [32]U8 |
2 | { | 2 | a[1] |
3 | let a = 1 + 2 * 4 | 3 | ; a@ |
4 | let b = 3.0 | 4 | |
5 | } | 5 | ; TODO |
6 | ; 0xf | 0xf0 | 6 | ; let x = [32]@S8 |
7 | ; 0xf & 0xff | 7 | ; let y = @x |
8 | ; 0x1 << 2 | 8 | ; a@[1] ; -> x[1] |
9 | ; 0x1 << 2 | 9 | |
10 | ; (~0xf & 0xfff << 8) == 0xfff00 | 10 | ; fun foo(a: Int b: S32): U32 { |
11 | ; 0xf << 4 | 0xf | 11 | ; fun bar() { |
12 | ; 1 + 2 | 12 | ; println("DING") |
13 | ; 1 < 2 | 13 | ; } |
14 | ; !(1 == 0 || 1 <= 1) | 14 | ; a + b |
15 | ; 1 == 1 && 1 <= 1 | ||
16 | ; !((1 * 2 * 3) * (1 * 2 * 3) >= 3 && 4 != 3 + 2) | ||
17 | ; 1 + 2 * 3 | ||
18 | ; 1.0 + 2.0 * 3.0 | ||
19 | ; true | ||
20 | ; false | ||
21 | ; 0 1 | ||
22 | ; "hello" | ||
23 | ; "world" | ||
24 | ; fun foo(): int { | ||
25 | ; 32 | ||
26 | ; } | 15 | ; } |
27 | ; 1 + 2 + foo() | 16 | ; fun bar() { |
17 | ; println("DING") | ||
18 | ; } | ||
19 | ; let b = 4 | ||
20 | ; let a: [32][32]U8 | ||
21 | ; set a[0] = 1 | ||
22 | ; set a[1] = 2 | ||
23 | ; ; let a: @@U32 | ||
24 | ; ; let b = sizeof(Int) | ||
25 | ; ; let b = Int | ||
26 | |||
27 | ; let a: U64 | ||
28 | ; let b: U32 | ||
29 | ; let c: U16 | ||
30 | ; let d: U8 | ||
31 | ; let buf1: [16]U8 | ||
32 | ; let buf2: [17]U8 | ||
33 | |||
34 | ; println("sizeof(Ptr) = " sizeof(Ptr)) | ||
35 | ; println("sizeof(Int) = " sizeof(Int)) | ||
36 | ; println("sizeof(UInt) = " sizeof(UInt)) | ||
37 | ; println("sizeof(U64) = " sizeof(U64)) | ||
38 | ; println("sizeof(U32) = " sizeof(U32)) | ||
39 | ; println("sizeof(U16) = " sizeof(U16)) | ||
40 | ; println("sizeof(U8) = " sizeof(U8)) | ||
41 | ; println("sizeof(S64) = " sizeof(S64)) | ||
42 | ; println("sizeof(S32) = " sizeof(S32)) | ||
43 | ; println("sizeof(S16) = " sizeof(S16)) | ||
44 | ; println("sizeof(S8) = " sizeof(S8)) | ||
45 | ; println("sizeof(F32) = " sizeof(F32)) | ||
46 | ; println("sizeof(F64) = " sizeof(F64)) | ||
47 | ; println("let a: U64, sizeof(a) = " sizeof(a)) | ||
48 | ; println("let b: U32, sizeof(b) = " sizeof(b)) | ||
49 | ; println("let c: U16, sizeof(c) = " sizeof(c)) | ||
50 | ; println("let d: U8, sizeof(d) = " sizeof(d)) | ||
51 | ; println("let buf1: [16]U8, sizeof(buf1) = " sizeof(buf1)) | ||
52 | ; println("let buf2: [17]U8, sizeof(buf2) = " sizeof(buf2)) | ||
53 | |||
54 | ; ; { | ||
55 | ; ; ; TODO: Make sure this doesn't work fool | ||
56 | ; ; let Int = 1 | ||
57 | ; ; } | ||
58 | |||
59 | ; ; sizeof(Int) | ||
60 | ; ; { | ||
61 | ; ; let p = @buf | ||
62 | ; ; set buf@ = 1 | ||
63 | ; ; } | ||
64 | |||
65 | ; ; let a: S8 | ||
66 | ; ; let buf = @a | ||
67 | |||
68 | ; ; { | ||
69 | ; ; let buf: [16]S8 | ||
70 | ; ; set buf@ = 2 | ||
71 | ; ; let ptr = buf ; Copy the buffer into a new variable p | ||
72 | ; ; set buf@ = 1 | ||
73 | |||
74 | ; ; println("buf addr: " buf) | ||
75 | ; ; println("ptr addr: " ptr) | ||
76 | ; ; println("buf@: " buf@) ; 1 | ||
77 | ; ; println("ptr@: " ptr@) ; 2 | ||
78 | ; ; println("buf@ == 1: " buf@ == 1) | ||
79 | ; ; println("ptr@ == 2: " ptr@ == 2) | ||
80 | ; ; } | ||
81 | ; ; { | ||
82 | ; ; let buf: [16]S16 | ||
83 | ; ; set buf@ = 2 | ||
84 | ; ; let ptr = buf ; Copy the buffer into a new variable p | ||
85 | ; ; set buf@ = 1 | ||
86 | |||
87 | ; ; println("buf addr: " buf) | ||
88 | ; ; println("ptr addr: " ptr) | ||
89 | ; ; println("buf@: " buf@) ; 1 | ||
90 | ; ; println("ptr@: " ptr@) ; 2 | ||
91 | ; ; println("buf@ == 1: " buf@ == 1) | ||
92 | ; ; println("ptr@ == 2: " ptr@ == 2) | ||
93 | |||
94 | ; ; set ptr = buf ; Copy the buffer into existing ptr. | ||
95 | ; ; set buf@ = 32 | ||
96 | ; ; println("buf addr: " buf) | ||
97 | ; ; println("ptr addr: " ptr) | ||
98 | ; ; println("buf@: " buf@) ; 1 | ||
99 | ; ; println("ptr@: " ptr@) ; 2 | ||
100 | |||
101 | ; ; let x: @S16 = @buf + 16 * sizeof(buf) | ||
102 | ; ; ; set x += 32 | ||
103 | ; ; ; set x@ = 45 | ||
104 | ; ; println("x@: " x@) | ||
105 | ; ; println("buf@: " buf@) ; 1 | ||
106 | ; ; println("ptr@: " ptr@) ; 2 | ||
107 | ; ; } | ||
108 | |||
109 | ; ; ; set p += 8 | ||
110 | ; ; set p@ = 2 | ||
111 | |||
112 | ; ; println(buf) | ||
113 | ; ; println(p) | ||
114 | ; ; println(buf@) | ||
115 | ; ; println(p@) | ||
116 | |||
117 | ; ; ; set p -= 8 | ||
118 | ; ; ; set p@ = 3 | ||
119 | |||
120 | ; ; println(buf) | ||
121 | ; ; println(p) | ||
122 | ; ; println(buf@) | ||
123 | ; ; println(p@) | ||
124 | ; ; set buf@ += 1 | ||
125 | ; ; println(buf@) | ||
126 | ; ; p[0] | ||
127 | ; ; ptr[0] | ||
128 | ; ; buf[0] | ||
129 | ; ; set buf[1] = 2 | ||
130 | ; ; set buf[3] = 4 | ||
131 | ; ; for let i = 0 , i < 16 , set i += 1 { | ||
132 | ; ; println(buf[i]) | ||
133 | ; ; } | ||
134 | |||
135 | ; ; let a: Int = 32 | ||
136 | ; ; let ptr = @a | ||
137 | ; ; println("a " a) | ||
138 | ; ; println("ptr " ptr) | ||
139 | |||
140 | ; ; set ptr@ = 12 | ||
141 | ; ; println("a " a) | ||
142 | ; ; println("ptr " ptr) | ||
143 | |||
144 | ; ; let ptr2 = @ptr | ||
145 | ; ; set ptr2@@ = 6 | ||
146 | ; ; println("a " a) | ||
147 | ; ; println("ptr " ptr) | ||
148 | |||
149 | ; ; let a: Int = 32 | ||
150 | ; ; let b: Int = 64 | ||
151 | ; ; let ptr = @a | ||
152 | ; ; println("a " a) | ||
153 | ; ; println("b " b) | ||
154 | ; ; println("ptr " ptr) | ||
155 | |||
156 | ; ; println("ptr@ " ptr@) | ||
157 | |||
158 | ; ; { ; FIXME: This doesn't work yet | ||
159 | ; ; set ptr@ = 12 | ||
160 | ; ; println(a) | ||
161 | ; ; println(b) | ||
162 | ; ; println(ptr) | ||
163 | ; ; } | ||
164 | |||
165 | ; ; set ptr += 8 | ||
166 | ; ; println(ptr@) | ||
167 | |||
168 | ; ; let a: Int = 32 | ||
169 | ; ; let b: @Int = @a | ||
170 | ; ; let c = @a | ||
171 | ; ; let d = @c | ||
172 | ; ; let e = a + b@ | ||
173 | ; ; let f = d@ | ||
174 | |||
175 | ; ; println("a -> " a) | ||
176 | ; ; println("b -> " b) | ||
177 | ; ; println("c -> " c) | ||
178 | ; ; println("d -> " d) | ||
179 | ; ; println("e -> " e) | ||
180 | ; ; println("f -> " f) | ||
181 | ; ; println("b@ -> " b@) | ||
182 | ; ; println("d@ -> " d@) | ||
183 | ; ; println("d@@ -> " d@@) | ||
184 | ; ; println("a == b@ and a == d@@ -> " a == b@ and a == d@@) | ||
185 | ; ; println("b == c and c == d@ -> " b == c and c == d@) | ||
186 | |||
187 | ; ; println("b[0] " b[0]) | ||
188 | ; ; println("c[0] " c[0]) | ||
189 | ; ; println("d[0] " d[0]) | ||
190 | |||
191 | ; ; let c = @a | ||
192 | ; ; let d = @c | ||
193 | ; ; let c: Int = a@ + 1 | ||
194 | ; ; let c: @@Int = @b | ||
195 | ; ; let d: @@@Int = @c | ||
196 | ; ; let static_array: [24]Int | ||
197 | ; ; let fun_ptr: (Int Int : Int) | ||
198 | |||
199 | ; ; let a: U16 = 0x0afafafafafafafafafa | ||
200 | ; ; println(a) | ||
201 | ; ; let a: U32 = -2 | ||
202 | ; ; ; let a: U32 = -2 + -1 | ||
203 | ; ; let b: @U32 = @a | ||
204 | ; ; ; let a = "hello" | ||
205 | ; ; ; let b = a | ||
206 | ; ; set a = 1 | ||
207 | ; ; let a = "hello" | ||
208 | ; ; let b = "world" | ||
209 | |||
210 | ; ; println(a) | ||
211 | ; ; println(b) | ||
212 | |||
213 | ; ; set b = a | ||
214 | ; ; set a = "WOOWOWO" | ||
215 | |||
216 | ; ; println(a) | ||
217 | ; ; println(b) | ||
218 | |||
219 | ; ; let a: S32[4] | ||
220 | ; ; set a[0] = 1 | ||
221 | ; ; set a[1] = 2 | ||
222 | ; ; set a[2] = 4 | ||
223 | ; ; set a[3] = 8 | ||
224 | ; ; let b = a | ||
225 | ; ; println(a[0] "--" a[1] "--" a[2] "--" a[3]) | ||
226 | ; ; println(b[0] "--" b[1] "--" b[2] "--" b[3]) | ||
227 | |||
228 | ; ; let a = 1 + 2 | ||
229 | ; ; a | ||
230 | ; ; let sum_int_uint: U16 = -2 + 0x5 | ||
231 | ; ; ; let sum_int_uint = -2 | ||
232 | ; ; println(sum_int_uint) | ||
233 | ; ; let varint: U16 = 0x0102030405060708 | ||
234 | ; ; let varfloat: F32 = 1.0 | ||
diff --git a/tests/conditionals.bad b/tests/conditionals.bad index aca5c36..85de62a 100644 --- a/tests/conditionals.bad +++ b/tests/conditionals.bad | |||
@@ -1,8 +1,8 @@ | |||
1 | ; Basic if expressions. | 1 | ; Basic if expressions. |
2 | if true "hello" | 2 | if true "hello" else "world" |
3 | 3 | ||
4 | ; These can produce values and the result bound to a name. | 4 | ; These can produce values and the result bound to a name. |
5 | let a = if (2 + 2 >= 4) 42 | 5 | let a = if (2 + 2 >= 4) 42 else 0 |
6 | 6 | ||
7 | ; We support a single if expression. | 7 | ; We support a single if expression. |
8 | let b = if (0xff == 0x32) "hello" else "world" | 8 | let b = if (0xff == 0x32) "hello" else "world" |
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 @@ | |||
1 | fun ret_true(): Bool { | ||
2 | print("ret_true ") | ||
3 | true | ||
4 | } | ||
5 | |||
6 | fun ret_false(): Bool { | ||
7 | print("ret_false ") | ||
8 | false | ||
9 | } | ||
10 | |||
11 | println("test1: " ret_true() and ret_false() and ret_true()) | ||
12 | println("test2: " ret_true() and ret_true() and ret_true()) | ||
13 | println("test3: " ret_false() and ret_true() and ret_true()) | ||
14 | println("test4: " ret_false() or ret_true() or ret_false()) | ||
15 | println("test5: " ret_true() or ret_true() or ret_false()) | ||
16 | println("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 @@ | |||
1 | fun printer() println("wowo!") | ||
2 | |||
3 | let y = 4 | ||
4 | fun 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 | |||
17 | nested() | ||
18 | printer() | ||
diff --git a/tests/pointers.bad b/tests/pointers.bad new file mode 100644 index 0000000..cf0c762 --- /dev/null +++ b/tests/pointers.bad | |||
@@ -0,0 +1,65 @@ | |||
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 | } | ||
37 | |||
38 | { | ||
39 | let buf: [16]S8 | ||
40 | set buf@ = 2 | ||
41 | let ptr = buf ; Copy the buffer into a new variable p | ||
42 | set buf@ = 1 | ||
43 | |||
44 | println("buf addr: " buf) | ||
45 | println("ptr addr: " ptr) | ||
46 | println("buf@: " buf@) | ||
47 | println("ptr@: " ptr@) | ||
48 | println("buf@ == 1: " buf@ == 1) | ||
49 | println("ptr@ == 2: " ptr@ == 2) | ||
50 | |||
51 | set ptr = buf ; Copy the buffer into existing ptr. | ||
52 | set buf@ = 32 | ||
53 | println("buf addr: " buf) | ||
54 | println("ptr addr: " ptr) | ||
55 | println("buf@: " buf@) | ||
56 | println("ptr@: " ptr@) | ||
57 | println("buf@ == 31: " buf@ == 32) | ||
58 | println("ptr@ == 1: " ptr@ == 1) | ||
59 | |||
60 | let x: @S8 = @buf + 16 | ||
61 | set x@ = 45 | ||
62 | println("x@: " x@) | ||
63 | println("buf@: " buf@) | ||
64 | println("ptr@: " ptr@) | ||
65 | } | ||
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 @@ | |||
1 | fun recur(num: UInt) { | ||
2 | println("NUM: " num) | ||
3 | if num == 0 return(nil) | ||
4 | recur2(num - 1) | ||
5 | } | ||
6 | |||
7 | fun recur2(num: Int) { | ||
8 | println("NUM: " num) | ||
9 | if num == 0 return(nil) | ||
10 | recur(num - 1) | ||
11 | } | ||
12 | |||
13 | recur(5) | ||
14 | |||
15 | fun infrecur(msg: Str, num: Int) { | ||
16 | println("NUM: " msg " " num) | ||
17 | infrecur(msg num + 1) | ||
18 | } | ||
19 | infrecur(" -> " 8) | ||
diff --git a/tests/semantics.bad b/tests/semantics.bad index acf4316..befbfab 100644 --- a/tests/semantics.bad +++ b/tests/semantics.bad | |||
@@ -42,6 +42,7 @@ match a { | |||
42 | cond { | 42 | cond { |
43 | 1 == 1 = "ha" | 43 | 1 == 1 = "ha" |
44 | 2 != 2 = "ho" | 44 | 2 != 2 = "ho" |
45 | else = "let's go" | ||
45 | } | 46 | } |
46 | 47 | ||
47 | struct vec { | 48 | struct vec { |
@@ -160,9 +161,7 @@ let maybe = if (1 == 2) { | |||
160 | 44 | 161 | 44 |
161 | } | 162 | } |
162 | 163 | ||
163 | let single = if (true) { | 164 | let single = if (true) 123 else 0 |
164 | 123 | ||
165 | } | ||
166 | 165 | ||
167 | while (!true) { | 166 | while (!true) { |
168 | println("asjdflasdjf") | 167 | println("asjdflasdjf") |
@@ -185,5 +184,5 @@ fun nested(): int { | |||
185 | let c = 32 | 184 | let c = 32 |
186 | 5 + c | 185 | 5 + c |
187 | } | 186 | } |
188 | } | 187 | } else 0 |
189 | } | 188 | } |
diff --git a/tests/sizeof.bad b/tests/sizeof.bad new file mode 100644 index 0000000..df66653 --- /dev/null +++ b/tests/sizeof.bad | |||
@@ -0,0 +1,26 @@ | |||
1 | let a: U64 | ||
2 | let b: U32 | ||
3 | let c: U16 | ||
4 | let d: U8 | ||
5 | let buf1: [16]U8 | ||
6 | let buf2: [17]U8 | ||
7 | |||
8 | println("sizeof(Ptr) = " sizeof(Ptr)) | ||
9 | println("sizeof(Int) = " sizeof(Int)) | ||
10 | println("sizeof(UInt) = " sizeof(UInt)) | ||
11 | println("sizeof(U64) = " sizeof(U64)) | ||
12 | println("sizeof(U32) = " sizeof(U32)) | ||
13 | println("sizeof(U16) = " sizeof(U16)) | ||
14 | println("sizeof(U8) = " sizeof(U8)) | ||
15 | println("sizeof(S64) = " sizeof(S64)) | ||
16 | println("sizeof(S32) = " sizeof(S32)) | ||
17 | println("sizeof(S16) = " sizeof(S16)) | ||
18 | println("sizeof(S8) = " sizeof(S8)) | ||
19 | println("sizeof(F32) = " sizeof(F32)) | ||
20 | println("sizeof(F64) = " sizeof(F64)) | ||
21 | println("let a: U64, sizeof(a) = " sizeof(a)) | ||
22 | println("let b: U32, sizeof(b) = " sizeof(b)) | ||
23 | println("let c: U16, sizeof(c) = " sizeof(c)) | ||
24 | println("let d: U8, sizeof(d) = " sizeof(d)) | ||
25 | println("let buf1: [16]U8, sizeof(buf1) = " sizeof(buf1)) | ||
26 | println("let buf2: [17]U8, sizeof(buf2) = " sizeof(buf2)) | ||