unittest = pyimport "unittest"
Test! = Inherit unittest.TestCase!
_ = Test!
# forward reference
C = Class { .x = D }
C|<: Eq|.
`==` self, other = self.x == other.x
C.
foo self, x = self.x.foo(x)
D = Class { .y = Int }
D.
new y = Self { .y; }
@staticmethod
foo x = x + 1
bar self, x := 1 = self.y + x
one = Self.new 1
D|<: Eq|.
`==` self, other = self.y == other.y
d = D.new 1
assert d.foo(1) == 2
assert d.bar(x:=2) == 3
c = C.new { .x = D.new(1) }
assert c.x.y == 1
Vec = Class [Int; _]
Vec.
sum self =
sum(self::base)
v = Vec.new [1, 2, 3]
assert v.sum() == 6