// MODULE: separate // MODULE: main // FILE: test.kt abstract class A : JavaDefaultSeparateModule, KotlinDefault { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } override val a: Int override get(): Int { return 5 } } abstract class B : JavaDefaultSeparateModule, KotlinPrivate { constructor() /* primary */ { super/*Any*/() /* () */ } } class C : JavaDefaultSeparateModule, KotlinPrivate { val a: Int field = 5 get constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } } class D : KotlinProtected, JavaDefaultSeparateModule { constructor() /* primary */ { super/*KotlinProtected*/() /* () */ } override fun foo() { } protected override val a: Int protected override get(): Int { return 5 } } class E : JavaDefaultSeparateModule, KotlinPublic { constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } override val a: Int override get(): Int { return 5 } } class F : KotlinInternal, JavaDefaultSeparateModule { constructor() /* primary */ { super/*KotlinInternal*/() /* () */ } override fun foo() { } override val a: Int override get(): Int { return 5 } } class G : JavaProtectedSeparateModule, KotlinDefault { constructor() /* primary */ { super/*JavaProtectedSeparateModule*/() /* () */ } override fun foo() { } override val a: Int override get(): Int { return 5 } } class H : JavaProtectedSeparateModule, KotlinPrivate { constructor() /* primary */ { super/*JavaProtectedSeparateModule*/() /* () */ } } class I : JavaProtectedSeparateModule, KotlinPrivate { val a: Int field = 5 get constructor() /* primary */ { super/*JavaProtectedSeparateModule*/() /* () */ } override fun foo() { } } class J : JavaProtectedSeparateModule, KotlinPublic { constructor() /* primary */ { super/*JavaProtectedSeparateModule*/() /* () */ } override fun foo() { } override val a: Int override get(): Int { return 5 } } abstract class K : JavaDefaultSeparateModule, JavaPublic { constructor() /* primary */ { super/*Any*/() /* () */ } } open class KotlinInternal { constructor() /* primary */ { super/*Any*/() /* () */ } internal open fun foo() { } internal open val a: Int internal open get(): Int { return 1 } } open class KotlinProtected { protected open val a: Int field = 1 protected open get constructor() /* primary */ { super/*Any*/() /* () */ } protected open fun foo() { } } class L : JavaDefaultSeparateModule, JavaPublic { val a: Int field = 1 get constructor() /* primary */ { super/*Any*/() /* () */ } override fun foo() { } } class M : JavaProtectedSeparateModule, JavaPublic { val a: Int field = 1 get constructor() /* primary */ { super/*JavaProtectedSeparateModule*/() /* () */ } override fun foo() { } } class N : JavaProtectedSeparateModule, JavaDefault { val a: Int field = 1 get constructor() /* primary */ { super/*JavaProtectedSeparateModule*/() /* () */ } override fun foo() { } } abstract class O : JavaPrivate, JavaDefaultSeparateModule { constructor() /* primary */ { super/*JavaPrivate*/() /* () */ } } class P : JavaPrivate, JavaDefaultSeparateModule { val a: Int field = 1 get constructor() /* primary */ { super/*JavaPrivate*/() /* () */ } override fun foo() { } } class R : JavaProtected, JavaDefaultSeparateModule { val a: Int field = 1 get constructor() /* primary */ { super/*JavaProtected*/() /* () */ } override fun foo() { } } interface KotlinDefault { fun foo() { } val a: Int get(): Int { return 1 } } interface KotlinPrivate { private final fun foo() { } private final val a: Int private final get(): Int { return 1 } } interface KotlinPublic { fun foo() { } val a: Int get(): Int { return 1 } } fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, i: I, j: J, k: K, l: L, m: M, n: N, o: O, p: P, r: R) { a.foo() a.() /*~> Unit */ b.foo() c.foo() d.foo() e.foo() e.() /*~> Unit */ f.foo() f.() /*~> Unit */ g.foo() g(super).#a /*~> Unit */ i.foo() i(super).#a /*~> Unit */ j.foo() j(super).#a /*~> Unit */ k.foo() l.foo() l.() /*~> Unit */ m.foo() m(super).#a /*~> Unit */ n.foo() n(super).#a /*~> Unit */ o.foo() p.foo() p.() /*~> Unit */ r.foo() r(super).#a /*~> Unit */ }