diff options
Diffstat (limited to 'spec/outputs/teal_lang.tl')
-rw-r--r-- | spec/outputs/teal_lang.tl | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/outputs/teal_lang.tl b/spec/outputs/teal_lang.tl new file mode 100644 index 0000000..0dc25a1 --- /dev/null +++ b/spec/outputs/teal_lang.tl | |||
@@ -0,0 +1,60 @@ | |||
1 | local a:{string:number} = { | ||
2 | value = 123 | ||
3 | } | ||
4 | local b:number = a.value | ||
5 | local function add(a:number, b:number):number | ||
6 | |||
7 | return a + b | ||
8 | |||
9 | end | ||
10 | local s = add(a.value, b) | ||
11 | print(s) | ||
12 | local record Point | ||
13 | x: number | ||
14 | y: number | ||
15 | end | ||
16 | function Point.new(x:number, y:number):Point | ||
17 | local point:Point = setmetatable({ }, { | ||
18 | __index = Point | ||
19 | }) | ||
20 | point.x = x or 0 | ||
21 | point.y = y or 0 | ||
22 | return point | ||
23 | |||
24 | end | ||
25 | function Point:move(dx:number, dy:number) | ||
26 | self.x = self.x + dx | ||
27 | self.y = self.y + dy | ||
28 | |||
29 | end | ||
30 | local p:Point = Point.new(100, 100) | ||
31 | p:move(50, 50) | ||
32 | local function filter(tab:{string}, handler:function(item:string):boolean):{string} | ||
33 | |||
34 | local _accum_0 = { } | ||
35 | local _len_0 = 1 | ||
36 | for _index_0 = 1, #tab do | ||
37 | local item = tab[_index_0] | ||
38 | if handler(item) then | ||
39 | _accum_0[_len_0] = item | ||
40 | _len_0 = _len_0 + 1 | ||
41 | end | ||
42 | end | ||
43 | return _accum_0 | ||
44 | |||
45 | end | ||
46 | local function cond(item:string):boolean | ||
47 | |||
48 | return item ~= "a" | ||
49 | |||
50 | end | ||
51 | local res = filter({ | ||
52 | "a", | ||
53 | "b", | ||
54 | "c", | ||
55 | "a" | ||
56 | }, cond) | ||
57 | for _index_0 = 1, #res do | ||
58 | local s = res[_index_0] | ||
59 | print(s) | ||
60 | end | ||