[AA] Tests: Rewrite sealed class inheritors collection to use the declaration provider

- Now that binary libraries are decompiled to stubs instead of PSI
  files, we cannot collect sealed inheritors from `KtFile`s anymore.
  Since all `KtFile`s and binary library stubs are both indexed by the
  declaration provider, we can collect inheritors from its index
  instead.
- Invalidating all sessions at the end of `prepareSealedClassInheritors`
  fixes some improper resolve phases in lazy resolution test data. While
  the previous implementation requested an uncached resolve session, it
  didn't account for sessions of dependencies still being cached.

^KT-65960
This commit is contained in:
Marco Pennekamp
2024-02-21 20:29:58 +01:00
committed by Space Team
parent 47afd37596
commit e62038f5f3
4 changed files with 101 additions and 72 deletions
@@ -1,14 +1,14 @@
RAW_FIR:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? open expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -44,16 +44,16 @@ FILE: [ResolvedTo(RAW_FIR)] jvm.kt
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? open expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -89,16 +89,16 @@ FILE: [ResolvedTo(IMPORTS)] jvm.kt
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? open expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -134,16 +134,16 @@ FILE: [ResolvedTo(IMPORTS)] jvm.kt
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? open expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -201,8 +201,8 @@ FILE: [ResolvedTo(IMPORTS)] common.kt
}
FILE: [ResolvedTo(IMPORTS)] jvm.kt
public open actual [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>| {
public open actual [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>| {
LAZY_super<R|kotlin/Any|>
}
@@ -1,14 +1,14 @@
RAW_FIR:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -46,16 +46,16 @@ FILE: [ResolvedTo(RAW_FIR)] jvm.kt
}
IMPORTS:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -93,16 +93,16 @@ FILE: [ResolvedTo(IMPORTS)] jvm.kt
}
COMPILER_REQUIRED_ANNOTATIONS:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -140,16 +140,16 @@ FILE: [ResolvedTo(IMPORTS)] jvm.kt
}
COMPANION_GENERATION:
FILE: [ResolvedTo(IMPORTS)] common.kt
public open expect [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>|
FILE: [ResolvedTo(RAW_FIR)] common.kt
public open expect [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? expect [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>|
public? final? expect [ResolvedTo(RAW_FIR)] fun existingMethodInBase([ResolvedTo(RAW_FIR)] param: T): R|kotlin/Unit|
}
public open [ResolvedTo(SUPER_TYPES)] class Transitive : R|Base<kotlin/String>| {
public open [ResolvedTo(RAW_FIR)] class Transitive : Base<String> {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Transitive] constructor(): R|Transitive| {
LAZY_super<Base<R|kotlin/String|>>
LAZY_super<Base<String>>
}
}
@@ -209,8 +209,8 @@ FILE: [ResolvedTo(IMPORTS)] common.kt
}
FILE: [ResolvedTo(IMPORTS)] jvm.kt
public open actual [ResolvedTo(RAW_FIR)] class Base<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(RAW_FIR)] T>(): R|Base<T>| {
public open actual [ResolvedTo(SUPER_TYPES)] class Base<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Base] constructor<[ResolvedTo(SUPER_TYPES)] T>(): R|Base<T>| {
LAZY_super<R|kotlin/Any|>
}