// MODULE: separate // FILE: Test.kt class I : J2 { internal val j1: Int field = 11 internal get internal val j2: Int field = 22 internal get internal val j3: Int field = 33 internal get internal val j4: Int field = 44 internal get constructor() /* primary */ { super/*J2*/() /* () */ } } // MODULE: main // FILE: test.kt class A : J { constructor() /* primary */ { super/*J*/() /* () */ } } class B : J2 { constructor() /* primary */ { super/*J2*/() /* () */ } } class C : J { constructor() /* primary */ { super/*J*/() /* () */ } override fun funJ1() { } override fun funJ2() { } internal override fun funJ4() { } } class D : J2 { constructor() /* primary */ { super/*J2*/() /* () */ } override fun funJ1() { } override fun funJ2() { } } class E : J { val j1: Int field = 100 get val j2: Int field = 200 get val j3: Int field = 300 get val j4: Int field = 400 get constructor() /* primary */ { super/*J*/() /* () */ } } open class F : J { protected val j1: Int field = 100 protected get protected val j2: Int field = 200 protected get protected val j3: Int field = 300 protected get protected var j4: Int field = 400 protected get protected set constructor() /* primary */ { super/*J*/() /* () */ } } class G : J { internal val j1: Int field = 100 internal get internal val j2: Int field = 200 internal get internal val j3: Int field = 300 internal get internal var j4: Int field = 400 internal get internal set constructor() /* primary */ { super/*J*/() /* () */ } } class H : J { private val j1: Int field = 100 private get private val j2: Int field = 200 private get private val j3: Int field = 300 private get private val j4: Int field = 400 private get constructor() /* primary */ { super/*J*/() /* () */ } } fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I) { a(super).#j1 = 1 a(super).#j2 = 2 a(super).#j4 = 3 a.funJ1() a.funJ2() a.funJ4() b(super).#j1 = 1 b.funJ1() c(super).#j1 = 1 c(super).#j2 = 2 c(super).#j4 = 3 c.funJ1() c.funJ2() c.funJ4() d(super).#j1 = 1 d.funJ1() d.funJ2() e(super).#j1 /*~> Unit */ e(super).#j2 /*~> Unit */ e.() /*~> Unit */ e(super).#j4 /*~> Unit */ f(super).#j1 /*~> Unit */ f(super).#j2 /*~> Unit */ f(super).#j4 /*~> Unit */ g(super).#j1 /*~> Unit */ g(super).#j2 /*~> Unit */ g.() /*~> Unit */ g(super).#j4 /*~> Unit */ h(super).#j1 /*~> Unit */ h(super).#j2 /*~> Unit */ h(super).#j4 /*~> Unit */ i(super).#j1 /*~> Unit */ i(super).#j2 /*~> Unit */ i(super).#j4 /*~> Unit */ }