--let Class A { a:Int; --check body b():Int{ { let a:Bool, a:Int in --let redefined (allowed) a<- true; --incompatible types let a:B, b:C in a<-b; --type C assigned to type B invalid 1; } }; --check init types c():Int{ { let a:Bool, a:Undefined in --undefined type in let a<- 1; } }; --check initialization d():Bool{ { let a:Bool <- q in --undefined id q a<- false; let a:Bool <- 1 in --incompatible types in initialization a<-true; let a:C <- self in --incompatible types in initialization 1; } }; --check return type e():A { { let a:B, r:C, m:A <- self in self; } }; f():A { let a:Bool, r:C, m:A <- self in { a<- true; r<- (new B); } }; }; Class B inherits C{ c:Int; }; Class C { d:Int; }; Class Main{ main():Int{ 1 }; };