Files
linguist/samples/Terra/forlist2.t
2016-01-28 11:22:27 +07:00

37 lines
588 B
Perl

struct Array {
data : int[3];
}
Array.metamethods.__for = function(syms,iter,body)
local pe = symbol()
local e = `@pe
return {e}, quote
var it = &iter
for i = 0,3 do
var [pe] = &it.data[i]
body
end
end
end
terra foo()
var a = Array{ array(1,2,3) }
for i in a do
i = i + 1
end
return a.data[0] + a.data[1] + a.data[2]
end
terra foo2()
var a = Array{ array(1,2,3) }
var s = 0
for i : double in a do
s = s + i
end
return s
end
assert(foo() == 9)
assert(foo2() == 6)