--let Class A { a:Int; k:Bool; --check body b():Int{ { let a:Bool, a:Int in --let redefined (allowed) a<- 1; let a:B, b:C in b<-a; 1; } }; --check init types c():Bool{ { let a:Bool in a<- true; } }; --check initialization d():Int{ { let a:Bool <- k in a<- false; let a:Bool <- k in a<-true; let a:A <- self in 1; } }; --check return type e():A { { let a:B, r:C, m:A <- self in self; } }; f():C { let a:Bool, r:C, m:A <- self in { a<- true; r<- (new B); } }; --nested net g():C { let a:Int, r:Int, m:Int <- 1 in 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 }; };