mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
38 lines
509 B
Perl
38 lines
509 B
Perl
|
|
IO = terralib.includec("stdio.h")
|
|
local Class = require("lib/javalike")
|
|
|
|
HasFoo = Class.interface({ foo = int -> int })
|
|
|
|
struct A {
|
|
a : int
|
|
}
|
|
|
|
terra A:foo(a : int) : int
|
|
return 1
|
|
end
|
|
Class.implements(A,HasFoo)
|
|
|
|
struct B {}
|
|
Class.extends(B,A)
|
|
|
|
|
|
struct C {}
|
|
Class.extends(C,B)
|
|
|
|
terra C:foo(a : int) : int
|
|
return 3
|
|
end
|
|
|
|
terra hasfoo(a : &HasFoo)
|
|
return a:foo(3)
|
|
end
|
|
|
|
terra testit()
|
|
var a = A.alloc()
|
|
var b = B.alloc()
|
|
var c = C.alloc()
|
|
return hasfoo(a) + hasfoo(b) + hasfoo(c)
|
|
end
|
|
|
|
assert(testit() == 5) |