2e26b0956e
Remove code generation for external fake overrides Fake overrides are resolved to real declaration on call sites This also removes generation of unused "equals", "hashCode" and "toString" methods. Avoid using hashes of IrType in generated code because they are unstable Merge-request: KT-MR-8658 Merged-by: Svyatoslav Kuzmich <svyatoslav.kuzmich@jetbrains.com>
129 lines
3.8 KiB
Kotlin
Vendored
129 lines
3.8 KiB
Kotlin
Vendored
// EXPECTED_REACHABLE_NODES: 1310
|
|
package foo
|
|
|
|
fun box(): String {
|
|
// in object
|
|
|
|
assertEquals("MyObject.Object.a", MyObject.Object.a)
|
|
assertEquals("MyObject.Object.b", MyObject.Object.b)
|
|
assertEquals(123, MyObject.Object.test())
|
|
|
|
assertEquals("MyObject.Object.Class().a", MyObject.Object.Class("MyObject.Object.Class().a").a)
|
|
assertEquals("MyObject.Object.Class().b", MyObject.Object.Class("something").b)
|
|
assertEquals(42, MyObject.Object.Class("something").test())
|
|
assertEquals("MyObject.Object.Class.a", MyObject.Object.Class.a)
|
|
assertEquals("MyObject.Object.Class.b", MyObject.Object.Class.b)
|
|
assertEquals(142, MyObject.Object.Class.test())
|
|
|
|
assertEquals("MyObject.Class().a", MyObject.Class("MyObject.Class().a").a)
|
|
assertEquals("MyObject.Class().b", MyObject.Class("something").b)
|
|
assertEquals(42, MyObject.Class("something").test())
|
|
assertEquals("MyObject.Class.a", MyObject.Class.a)
|
|
assertEquals("MyObject.Class.b", MyObject.Class.b)
|
|
assertEquals(142, MyObject.Class.test())
|
|
|
|
assertEquals("MyObject.a.a", MyObject.a.a)
|
|
assertEquals("MyObject.a.b", MyObject.a.b)
|
|
assertEquals(34, MyObject.a.test())
|
|
assertEquals("MyObject.b", MyObject.b)
|
|
assertEquals(23, MyObject.test())
|
|
|
|
// in class
|
|
|
|
assertEquals("Class.Object.a", Class.Object.a)
|
|
assertEquals("Class.Object.b", Class.Object.b)
|
|
assertEquals(55, Class.Object.test())
|
|
|
|
assertEquals("Class.Class().a", Class.Class("Class.Class().a").a)
|
|
assertEquals("Class.Class().b", Class.Class("something").b)
|
|
assertEquals(66, Class.Class("something").test())
|
|
assertEquals("Class.Class.a", Class.Class.a)
|
|
assertEquals("Class.Class.b", Class.Class.b)
|
|
assertEquals(88, Class.Class.test())
|
|
|
|
assertEquals("Class.a.a", Class.a.a)
|
|
assertEquals("Class.a.b", Class.a.b)
|
|
assertEquals(22, Class.a.test())
|
|
assertEquals("Class.b", Class.b)
|
|
assertEquals(77, Class.test())
|
|
|
|
return "OK";
|
|
}
|
|
|
|
external object MyObject {
|
|
object Object {
|
|
val a: String = definedExternally
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
|
|
@JsName("AnotherClass")
|
|
class Class(a: String) {
|
|
val a: String
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
|
|
companion object {
|
|
val a: String = definedExternally
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
}
|
|
}
|
|
}
|
|
|
|
class Class(a: String) {
|
|
val a: String
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
|
|
companion object {
|
|
val a: String = definedExternally
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
}
|
|
}
|
|
|
|
interface Trait {
|
|
val a: String
|
|
var b: String
|
|
fun test(): Int
|
|
}
|
|
|
|
val a: Trait = definedExternally
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
}
|
|
|
|
@JsName("SomeClass")
|
|
external class Class {
|
|
object Object {
|
|
val a: String = definedExternally
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
}
|
|
|
|
class Class(a: String) {
|
|
val a: String
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
|
|
companion object {
|
|
val a: String = definedExternally
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
}
|
|
}
|
|
|
|
interface Trait {
|
|
val a: String
|
|
var b: String
|
|
fun test(): Int
|
|
}
|
|
|
|
companion object {
|
|
@JsName("aaa")
|
|
val a: Trait = definedExternally
|
|
var b: String = definedExternally
|
|
fun test(): Int = definedExternally
|
|
}
|
|
}
|