// MODULE: m1 // FILE: a.kt package a.b class c { fun ab_c() {} } fun ab_fun() {} // MODULE: m2 // FILE: b.kt package a fun a_fun() {} class b { fun a_b() {} class c { fun a_bc() {} } } // FILE: b2.kt class x { fun top_x() {} } // MODULE: m3(m1, m2) // FILE: c.kt package some class a { class b { fun _ab() {} class c { fun _abc() {} } } fun _a() {} } class x { fun _x() {} } fun test(a_b: package.a.b) { a_b.a_b() a_b._ab() package.a.a_fun() // todo val a_b2 = package.a.b() a_b2.a_b() // todo a_b2._ab() } fun test2(ab_c: package.a.b.c) { ab_c.ab_c() val ab_c2 = package.a.b.c() ab_c2.ab_c() ab_c2.a_bc() } fun test3(top_x: package.x) { top_x.top_x() val top_x2 = package.x() top_x2.top_x() // todo top_x2._x() } // FILE: c2.kt package other object a { object b { fun _ab() {} } fun _a() {} } fun test(a: a) { package.a.a_fun() // todo package.a._a() // todo package.a.b.ab_fun() // todo package.a.b._ab() // todo }