82255d5ee8
Add tests for fake overrides with focus on java interoperability Co-authored-by: Aleksandra Arsenteva <aleksandra.arsenteva@jetbrains.com>
231 lines
3.2 KiB
Kotlin
Vendored
231 lines
3.2 KiB
Kotlin
Vendored
abstract class A : Java2, Java1, KotlinInterface {
|
|
constructor() /* primary */ {
|
|
super/*Java2*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class B : Java2, Java1, KotlinInterface {
|
|
override var a: Int
|
|
field = a
|
|
override get
|
|
override set
|
|
|
|
constructor(a: Int) /* primary */ {
|
|
super/*Java2*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun bar(): Int {
|
|
return 5
|
|
}
|
|
|
|
override fun foo(t: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
class C : Java1, KotlinInterface, KotlinInterface2 {
|
|
override var a: Int
|
|
field = a
|
|
override get
|
|
override set
|
|
|
|
constructor(a: Int) /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun bar(): Int {
|
|
return 1
|
|
}
|
|
|
|
override fun foo(t: Any) {
|
|
}
|
|
|
|
}
|
|
|
|
class D : Java2, Java1, Java3 {
|
|
constructor() /* primary */ {
|
|
super/*Java2*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class E : Java2, Java1, Java3 {
|
|
constructor() /* primary */ {
|
|
super/*Java2*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun foo(t: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
abstract class F : Java1, Java4 {
|
|
constructor() /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class G : Java1, Java4 {
|
|
constructor() /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun bar(): Int {
|
|
return 10
|
|
}
|
|
|
|
override fun foo(t: Int) {
|
|
}
|
|
|
|
override var a: Int
|
|
override get(): Int {
|
|
return 10
|
|
}
|
|
override set(value: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
class H : Java4, KotlinInterface2 {
|
|
override var a: Int
|
|
field = a
|
|
override get
|
|
override set
|
|
|
|
constructor(a: Int) /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun bar(): Int {
|
|
return 1
|
|
}
|
|
|
|
override fun foo(t: Any) {
|
|
}
|
|
|
|
override fun foo(t: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
abstract class I : Java5, KotlinInterface {
|
|
constructor() /* primary */ {
|
|
super/*Java5*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class J : Java5, KotlinInterface {
|
|
constructor() /* primary */ {
|
|
super/*Java5*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override var a: Int
|
|
override get(): Int {
|
|
return 10
|
|
}
|
|
override set(value: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
class K : Java5, Java3 {
|
|
constructor() /* primary */ {
|
|
super/*Java5*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class L : Java5, Java3 {
|
|
constructor() /* primary */ {
|
|
super/*Java5*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun foo(t: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
interface KotlinInterface {
|
|
fun bar(): Int {
|
|
return 10
|
|
}
|
|
|
|
fun foo(t: Int) {
|
|
}
|
|
|
|
abstract var a: Int
|
|
abstract get
|
|
abstract set
|
|
|
|
}
|
|
|
|
interface KotlinInterface2 {
|
|
abstract fun bar(): Any
|
|
|
|
abstract fun foo(t: Any)
|
|
|
|
abstract val a: Any
|
|
abstract get
|
|
|
|
}
|
|
|
|
fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L) {
|
|
a.<get-a>() /*~> Unit */
|
|
a.foo(t = 1)
|
|
a.bar() /*~> Unit */
|
|
b.<get-a>() /*~> Unit */
|
|
b.foo(t = 1)
|
|
b.bar() /*~> Unit */
|
|
c.<get-a>() /*~> Unit */
|
|
c.foo(t = 1)
|
|
c.foo(t = "")
|
|
c.bar() /*~> Unit */
|
|
d.foo(t = 1)
|
|
e.foo(t = 1)
|
|
f.<get-a>() /*~> Unit */
|
|
f.foo(t = 1)
|
|
f.bar() /*~> Unit */
|
|
g.<get-a>() /*~> Unit */
|
|
g.foo(t = 1)
|
|
g.bar() /*~> Unit */
|
|
h.<get-a>() /*~> Unit */
|
|
h.foo(t = 1)
|
|
h.foo(t = "")
|
|
h.bar() /*~> Unit */
|
|
i.<get-a>() /*~> Unit */
|
|
i.foo(t = 1)
|
|
i.bar() /*~> Unit */
|
|
j.<get-a>() /*~> Unit */
|
|
j.foo(t = 1)
|
|
j.bar() /*~> Unit */
|
|
k.foo(t = 1)
|
|
l.foo(t = 1)
|
|
}
|