84f0f6e099
Previously we forced computation only for java and precompiled classes, assuming, that binary class can not extend source class, but it's not true in two cases: 1. Classpath substitution: class with same name declared in library and the source (more rare case) 2. Metadata compilation: depends-on dependcies are passed in binary format, so `expect class` may be a binary one and corresponding `actual class` may be a source. So if some class in `common` module extend this expect class, actual class will be substituted instead of it ^KT-65669 Fixed
28 lines
554 B
Kotlin
Vendored
28 lines
554 B
Kotlin
Vendored
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6
|
|
// KT-65822: JS targets are ignored, as they doesn't support source-binary-source dependencies
|
|
// IGNORE_BACKEND_K2: WASM
|
|
// Reason: KT-65794
|
|
// IGNORE_NATIVE: cacheMode=STATIC_EVERYWHERE && target=linux_x64
|
|
// ISSUE: KT-65669
|
|
|
|
// MODULE: a
|
|
// FILE: a.kt
|
|
abstract class Base {
|
|
open fun foo() {}
|
|
}
|
|
|
|
open class Derived : Base()
|
|
|
|
// MODULE: b(a)
|
|
// FILE: first.kt
|
|
class Impl : Derived() {
|
|
override fun foo() {}
|
|
}
|
|
|
|
// FILE: second.kt
|
|
abstract class Base {
|
|
open fun foo() {}
|
|
}
|
|
|
|
fun box(): String = "OK"
|