//############################################################################ // Import statements //############################################################################ //############################################################################ object checker { def check(location: String, what: String, value: Any): Unit = { Console.print("In " + location + ", " + what + ".toString() returns "); Console.flush; val string: String = if (value == null) "null" else value.toString(); val test = if (string == location) "ok" else "KO"; Console.println(string + " -> " + test); Console.flush; } } import checker.check; //############################################################################ //import o_ico.v_ico; class C_ico() { o_ico.v_ico = this; import o_ico.v_ico; override def toString(): String = "C_ico"; def method: C_ico = v_ico; val field: C_ico = v_ico; check("C_ico", "v_ico ", v_ico); check("C_ico", "field ", field); check("C_ico", "method", method); Console.println; } object o_ico { var v_ico: C_ico = null; new C_ico(); } //############################################################################ object o_ioc { var v_ioc: C_ioc = null; new C_ioc(); } import o_ioc.v_ioc; class C_ioc() { o_ioc.v_ioc = this; override def toString(): String = "C_ioc"; def method: C_ioc = v_ioc; val field: C_ioc = v_ioc; check("C_ioc", "v_ioc ", v_ioc); check("C_ioc", "field ", field); check("C_ioc", "method", method); Console.println; } //############################################################################ object o_oic { var v_oic: C_oic = null; new C_oic(); } import o_oic.v_oic; class C_oic() { o_oic.v_oic = this; override def toString(): String = "C_oic"; def method: C_oic = v_oic; val field: C_oic = v_oic; check("C_oic", "v_oic ", v_oic); check("C_oic", "field ", field); check("C_oic", "method", method); Console.println; } //############################################################################ object Test { def main(args: Array[String]): Unit = { o_ico; o_ioc; o_oic; () } } //############################################################################