mirror of
https://github.com/KevinMidboe/linguist.git
synced 2026-01-20 00:05:33 +00:00
samples: add Terra samples
source: https://github.com/zdevito/terra/tree/master/tests
This commit is contained in:
45
samples/Terra/class2.t
Normal file
45
samples/Terra/class2.t
Normal file
@@ -0,0 +1,45 @@
|
||||
local Interface = require("lib/golike")
|
||||
|
||||
local I = Interface.create {
|
||||
get = {} -> int;
|
||||
set = int -> {};
|
||||
}
|
||||
|
||||
struct A {
|
||||
data : int
|
||||
}
|
||||
|
||||
terra A:get()
|
||||
return self.data
|
||||
end
|
||||
|
||||
terra A:set(a : int)
|
||||
self.data = a
|
||||
end
|
||||
|
||||
struct B {
|
||||
data : int
|
||||
}
|
||||
|
||||
terra B:get()
|
||||
return self.data + 1
|
||||
end
|
||||
|
||||
terra B:set(a : int)
|
||||
self.data = self.data + a
|
||||
end
|
||||
|
||||
|
||||
terra anInterface(a : I)
|
||||
a:set(3)
|
||||
return a:get()
|
||||
end
|
||||
|
||||
terra foo()
|
||||
var a = A { 0 }
|
||||
var b = B { 2 }
|
||||
return anInterface(&a) + anInterface(&b)
|
||||
end
|
||||
|
||||
local test = require("test")
|
||||
test.eq(foo(),9)
|
||||
Reference in New Issue
Block a user