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

45 lines
529 B
Perl

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)