82255d5ee8
Add tests for fake overrides with focus on java interoperability Co-authored-by: Aleksandra Arsenteva <aleksandra.arsenteva@jetbrains.com>
198 lines
2.8 KiB
Kotlin
Vendored
198 lines
2.8 KiB
Kotlin
Vendored
open annotation class MyAnnotation : Annotation {
|
|
constructor() /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
open class A {
|
|
@MyAnnotation
|
|
open val a: Int
|
|
field = 1
|
|
open get
|
|
|
|
@MyAnnotation
|
|
constructor(i: Int) {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
@MyAnnotation
|
|
open fun foo(@MyAnnotation a: Int) {
|
|
}
|
|
|
|
open var b: Int
|
|
@MyAnnotation
|
|
open get(): Int {
|
|
return 10
|
|
}
|
|
@MyAnnotation
|
|
open set(value: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
class B : Java1 {
|
|
constructor() /* primary */ {
|
|
super/*Java1*/(i = 1)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class C : Java1 {
|
|
constructor() /* primary */ {
|
|
super/*Java1*/(i = 1)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun foo(a: Int) {
|
|
}
|
|
|
|
override val a: Int
|
|
override get(): Int {
|
|
return 10
|
|
}
|
|
|
|
override var b: Int
|
|
override get(): Int {
|
|
return 11
|
|
}
|
|
override set(value: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
class D : Java2 {
|
|
constructor() /* primary */ {
|
|
super/*Java2*/(i = 2)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class E : Java2 {
|
|
override var b: Int
|
|
field = 0
|
|
override get(): Int {
|
|
return 11
|
|
}
|
|
override set
|
|
|
|
constructor() /* primary */ {
|
|
super/*Java2*/(i = 2)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun foo(a: Int) {
|
|
}
|
|
|
|
override val a: Int
|
|
override get(): Int {
|
|
return 10
|
|
}
|
|
|
|
}
|
|
|
|
abstract class F : Java1, Java3 {
|
|
constructor() /* primary */ {
|
|
super/*Java1*/(i = 1)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class G : Java1, Java3 {
|
|
constructor() /* primary */ {
|
|
super/*Java1*/(i = 1)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun foo(a: Int) {
|
|
}
|
|
|
|
override fun setA(a: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
class H : Java1, KotlinInterface {
|
|
constructor() /* primary */ {
|
|
super/*Java1*/(i = 1)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
class I : Java1, KotlinInterface {
|
|
constructor() /* primary */ {
|
|
super/*Java1*/(i = 1)
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun foo(a: Int) {
|
|
}
|
|
|
|
override val a: Int
|
|
override get(): Int {
|
|
return 2
|
|
}
|
|
|
|
override var b: Int
|
|
override get(): Int {
|
|
return 2
|
|
}
|
|
override set(value: Int) {
|
|
}
|
|
|
|
}
|
|
|
|
interface KotlinInterface {
|
|
abstract fun foo(a: Int)
|
|
|
|
abstract val a: Int
|
|
abstract get
|
|
|
|
abstract val b: Int
|
|
abstract get
|
|
|
|
}
|
|
|
|
fun test(b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I) {
|
|
b.<get-a>() /*~> Unit */
|
|
b.<get-b>() /*~> Unit */
|
|
b.foo(a = 1)
|
|
c.<get-a>() /*~> Unit */
|
|
c.<get-b>() /*~> Unit */
|
|
c.foo(a = 1)
|
|
d.<get-a>() /*~> Unit */
|
|
d.<get-b>() /*~> Unit */
|
|
d.foo(a = 1)
|
|
e.<get-a>() /*~> Unit */
|
|
e.<get-b>() /*~> Unit */
|
|
e.foo(a = 1)
|
|
f.<get-a>() /*~> Unit */
|
|
f.<get-b>() /*~> Unit */
|
|
f.foo(a = 1)
|
|
g.<get-a>() /*~> Unit */
|
|
g.<get-b>() /*~> Unit */
|
|
g.foo(a = 1)
|
|
h.<get-a>() /*~> Unit */
|
|
h.<get-b>() /*~> Unit */
|
|
h.foo(a = 1)
|
|
i.<get-a>() /*~> Unit */
|
|
i.<get-b>() /*~> Unit */
|
|
i.foo(a = 1)
|
|
}
|