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

68 lines
1021 B
Perl

terra foo()
return 8.0,9
end
local torturechain = quote
var a = 3.0
in
[quote
var b = 4
in
[quote
var c = 5.0
in
a,b,c, [quote
var d = 6
in
[quote
var e = 7.0
in
d,e,foo()
end]
end]
end]
end]
end
terra bindit()
var a,b,c,r1 = torturechain
var d,e,r2 = r1
var f,g = r2
return a + b + c + d + e + f + g
end
local sum = 3+4+5+6+7+8+9
assert(sum == bindit())
terra foo(z : int, a : int, b : int, c : int, d : int, e : int, f : int, g : int)
return z + a + b + c + d + e + f + g
end
terra overloadit(a : int, b : int, c : int, d : int, e : int, f : int)
return 0
end
terra overloadit(a : double, b : int, c : int, d : int, e : int, f : int)
return 1
end
terra callit()
var a,b,c,r1 = torturechain
var d,e,r2 = r1
var f,g = r2
return foo(0,a,b,c,d,e,f,g)
end
terra callol()
var a,b,c,r1 = torturechain
var d,e,r2 = r1
var f,g = r2
return overloadit(a,b,c,e,f,g)
end
assert(callit() == sum)
assert(callol() == 1)