[FIR] Resolve statuses of supertypes for all non-source classes

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
This commit is contained in:
Dmitriy Novozhilov
2024-02-14 08:42:59 +02:00
committed by Space Team
parent 9219a8f485
commit 84f0f6e099
22 changed files with 149 additions and 4 deletions
+27
View File
@@ -0,0 +1,27 @@
// 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"