aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/compilation.bad259
-rw-r--r--tests/conditionals.bad4
-rw-r--r--tests/logic-shortcircuit.bad16
-rw-r--r--tests/nested.bad18
-rw-r--r--tests/pointers.bad65
-rw-r--r--tests/recursion.bad19
-rw-r--r--tests/semantics.bad7
-rw-r--r--tests/sizeof.bad26
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 @@
1let a = 8 1let a: [32]U8
2{ 2a[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.
2if true "hello" 2if 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.
5let a = if (2 + 2 >= 4) 42 5let a = if (2 + 2 >= 4) 42 else 0
6 6
7; We support a single if expression. 7; We support a single if expression.
8let b = if (0xff == 0x32) "hello" else "world" 8let 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 @@
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..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 @@
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)
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 {
42cond { 42cond {
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
47struct vec { 48struct vec {
@@ -160,9 +161,7 @@ let maybe = if (1 == 2) {
160 44 161 44
161} 162}
162 163
163let single = if (true) { 164let single = if (true) 123 else 0
164 123
165}
166 165
167while (!true) { 166while (!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 @@
1let a: U64
2let b: U32
3let c: U16
4let d: U8
5let buf1: [16]U8
6let buf2: [17]U8
7
8println("sizeof(Ptr) = " sizeof(Ptr))
9println("sizeof(Int) = " sizeof(Int))
10println("sizeof(UInt) = " sizeof(UInt))
11println("sizeof(U64) = " sizeof(U64))
12println("sizeof(U32) = " sizeof(U32))
13println("sizeof(U16) = " sizeof(U16))
14println("sizeof(U8) = " sizeof(U8))
15println("sizeof(S64) = " sizeof(S64))
16println("sizeof(S32) = " sizeof(S32))
17println("sizeof(S16) = " sizeof(S16))
18println("sizeof(S8) = " sizeof(S8))
19println("sizeof(F32) = " sizeof(F32))
20println("sizeof(F64) = " sizeof(F64))
21println("let a: U64, sizeof(a) = " sizeof(a))
22println("let b: U32, sizeof(b) = " sizeof(b))
23println("let c: U16, sizeof(c) = " sizeof(c))
24println("let d: U8, sizeof(d) = " sizeof(d))
25println("let buf1: [16]U8, sizeof(buf1) = " sizeof(buf1))
26println("let buf2: [17]U8, sizeof(buf2) = " sizeof(buf2))