mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
samples: add Terra samples
source: https://github.com/zdevito/terra/tree/master/tests
This commit is contained in:
40
samples/Terra/nestextract.t
Normal file
40
samples/Terra/nestextract.t
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
|
||||
struct A {
|
||||
a : int
|
||||
}
|
||||
|
||||
count = global(int,0)
|
||||
|
||||
terra twoAs(a : int)
|
||||
return A {a}, A { a }
|
||||
end
|
||||
|
||||
function A.metamethods.__cast(fromt,tot,exp)
|
||||
if tot == A and fromt == int then
|
||||
return `twoAs(exp)._0
|
||||
end
|
||||
error("what")
|
||||
end
|
||||
|
||||
terra twoInts()
|
||||
count = count + 1
|
||||
return count,2
|
||||
end
|
||||
|
||||
terra takesAnA(a : A)
|
||||
return a.a
|
||||
end
|
||||
|
||||
dotwice = macro(function(exp)
|
||||
return {exp,exp}
|
||||
end)
|
||||
|
||||
terra doit()
|
||||
return dotwice(takesAnA((twoInts()._0)))
|
||||
end
|
||||
|
||||
|
||||
doit:printpretty()
|
||||
local test = require("test")
|
||||
test.meq({1,2},doit())
|
||||
Reference in New Issue
Block a user