[FIR-TEST] Get rid of deprecated methods usage in AbstractFirLoadCompiledKotlin

Now complied declaration names are collected via ModuleDescriptor,
  so tests pass more correctly. Before this change tests didn't render
  compiled typealiases and properties.
Also some testdata was changed because of new order of declaration
This commit is contained in:
Dmitriy Novozhilov
2020-08-13 11:55:12 +03:00
parent 41aa90ad71
commit 913ea9b56d
44 changed files with 254 additions and 11 deletions
@@ -1,4 +1,8 @@
@PROPERTY:R|test/Anno|() public final val x: R|kotlin/Int|
public get(): R|kotlin/Int|
public final annotation class Anno : R|kotlin/Annotation| {
public constructor(): R|test/Anno|
}
@@ -1,3 +1,6 @@
@FIELD:R|test/Anno|(t = R|java/lang/annotation/ElementType.FIELD|()) public final val bar: R|kotlin/Int|
public get(): R|kotlin/Int|
@R|test/Anno|(t = R|java/lang/annotation/ElementType.METHOD|()) public final fun foo(): R|kotlin/Unit|
public final annotation class Anno : R|kotlin/Annotation| {
@@ -7,3 +10,4 @@ public final annotation class Anno : R|kotlin/Annotation| {
public constructor(t: R|java/lang/annotation/ElementType|): R|test/Anno|
}
@@ -1,3 +1,6 @@
@FIELD:R|test/Anno|(t = <implicitArrayOf>(R|java/lang/annotation/ElementType.PACKAGE|())) public final val bar: R|kotlin/Int|
public get(): R|kotlin/Int|
@R|test/Anno|(t = <implicitArrayOf>()) public final fun baz(): R|kotlin/Unit|
@R|test/Anno|(t = <implicitArrayOf>(R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.FIELD|())) public final fun foo(): R|kotlin/Unit|
@@ -9,3 +12,4 @@ public final annotation class Anno : R|kotlin/Annotation| {
public constructor(vararg t: R|kotlin/Array<out java/lang/annotation/ElementType>|): R|test/Anno|
}
@@ -1,4 +1,8 @@
public final val property: R|kotlin/Int|
@R|test/Anno|() public get(): R|kotlin/Int|
public final annotation class Anno : R|kotlin/Annotation| {
public constructor(): R|test/Anno|
}
@@ -1,4 +1,9 @@
@FIELD:R|test/Anno|() public final var property: R|kotlin/Int|
public get(): R|kotlin/Int|
public set(value: R|kotlin/Int|): R|kotlin/Unit|
public final annotation class Anno : R|kotlin/Annotation| {
public constructor(): R|test/Anno|
}
@@ -1,4 +1,9 @@
public final var property: R|kotlin/Int|
public get(): R|kotlin/Int|
@R|test/Anno|() public set(value: R|kotlin/Int|): R|kotlin/Unit|
public final annotation class Anno : R|kotlin/Annotation| {
public constructor(): R|test/Anno|
}
@@ -1,3 +1,6 @@
@FIELD:R|test/Anno|(t = <implicitArrayOf>(String(prosper))) public final val bar: R|kotlin/Int|
public get(): R|kotlin/Int|
@R|test/Anno|(t = <implicitArrayOf>()) public final fun baz(): R|kotlin/Unit|
@R|test/Anno|(t = <implicitArrayOf>(String(live), String(long))) public final fun foo(): R|kotlin/Unit|
@@ -9,3 +12,4 @@ public final annotation class Anno : R|kotlin/Annotation| {
public constructor(vararg t: R|kotlin/Array<out kotlin/String>|): R|test/Anno|
}
@@ -1,3 +1,7 @@
public final var foo: R|kotlin/Int|
public get(): R|kotlin/Int|
public set(@R|test/A|() @R|test/B|() value: R|kotlin/Int|): R|kotlin/Unit|
public final annotation class A : R|kotlin/Annotation| {
public constructor(): R|test/A|
@@ -7,3 +11,4 @@ public final annotation class B : R|kotlin/Annotation| {
public constructor(): R|test/B|
}
@@ -1,3 +1,12 @@
@PROPERTY:R|test/DoubleAnno|() public final val R|kotlin/Double|.extension: R|kotlin/Int|
public get(): R|kotlin/Int|
@PROPERTY:R|test/IntAnno|() public final val R|kotlin/Int|.extension: R|kotlin/Int|
public get(): R|kotlin/Int|
@PROPERTY:R|test/StringAnno|() public final val R|kotlin/String|.extension: R|kotlin/String|
public get(): R|kotlin/String|
public final annotation class DoubleAnno : R|kotlin/Annotation| {
public constructor(): R|test/DoubleAnno|
@@ -12,3 +21,4 @@ public final annotation class StringAnno : R|kotlin/Annotation| {
public constructor(): R|test/StringAnno|
}
@@ -1,4 +1,8 @@
@PROPERTY:R|test/Anno|() public final val property: R|kotlin/Int|
public get(): R|kotlin/Int|
public final annotation class Anno : R|kotlin/Annotation| {
public constructor(): R|test/Anno|
}
@@ -5,9 +5,12 @@ public final fun typeAnnotation(): R|kotlin/Unit|
}
public final typealias TypeAliasAnnotation<X> = R|kotlin/collections/List<X>|
public final class TypeParameterAnnotation : R|kotlin/Any| {
public final fun <T> foo(x: R|T|): R|kotlin/Unit|
public constructor(): R|test/TypeParameterAnnotation|
}
@@ -1,3 +1,6 @@
public final val x: R|kotlin/Int|
public get(): R|kotlin/Int|
public final object Obj : R|kotlin/Any| {
public final fun f(): R|kotlin/String|
@@ -7,3 +10,4 @@ public final object Obj : R|kotlin/Any| {
private constructor(): R|test/Obj|
}
@@ -15,3 +15,4 @@ public abstract interface X : R|kotlin/Any| {
public abstract interface Y : R|test/X| {
}
@@ -14,3 +14,4 @@ public abstract interface Super2 : R|kotlin/Any| {
private final fun foo(): R|kotlin/String|
}
@@ -20,3 +20,4 @@ public abstract interface Super2 : R|kotlin/Any| {
public get(): R|kotlin/String|
}
@@ -18,3 +18,4 @@ public abstract interface Super2 : R|kotlin/Any| {
public get(): R|kotlin/String|
}
@@ -26,3 +26,4 @@ public final class A : R|kotlin/Any| {
public constructor(): R|test/A|
}
@@ -1,5 +1,15 @@
public final val f1: R|kotlin/Int|
public get(): R|kotlin/Int|
public final fun f2(): R|kotlin/Int|
public final val f3: R|kotlin/Int|
public get(): R|kotlin/Int|
public final fun f4(): R|kotlin/Int|
public final fun f4(i: R|kotlin/Int|): R|kotlin/Int|
public final val f5: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -1 +1,3 @@
public final val R|kotlin/collections/Collection<*>|.anotherSize: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -1,3 +1,6 @@
private final const val topLevel: R|kotlin/Int| = Int(1)
private get(): R|kotlin/Int|
public final object A : R|kotlin/Any| {
internal final const val inObject: R|kotlin/Int| = Int(2)
internal get(): R|kotlin/Int|
@@ -18,3 +21,4 @@ public final class B : R|kotlin/Any| {
}
}
@@ -1 +1,45 @@
public final const val MAX_HIGH_SURROGATE: R|kotlin/Char| = Char(56319)
public get(): R|kotlin/Char|
public final const val b: R|kotlin/Byte| = Byte(100)
public get(): R|kotlin/Byte|
public final const val b1: R|kotlin/Byte| = Byte(1)
public get(): R|kotlin/Byte|
public final const val bb: R|kotlin/Boolean| = Boolean(true)
public get(): R|kotlin/Boolean|
public final const val c: R|kotlin/Char| = Char(960)
public get(): R|kotlin/Char|
public final const val d: R|kotlin/Double| = Double(3.14)
public get(): R|kotlin/Double|
public final const val f: R|kotlin/Float| = Float(3.14)
public get(): R|kotlin/Float|
public final const val i: R|kotlin/Int| = Int(2000000)
public get(): R|kotlin/Int|
public final const val i1: R|kotlin/Short| = Short(1)
public get(): R|kotlin/Short|
public final const val l: R|kotlin/Long| = Long(2000000000000)
public get(): R|kotlin/Long|
public final const val l1: R|kotlin/Long| = Long(1)
public get(): R|kotlin/Long|
public final const val nl: R|kotlin/Char| = Char(10)
public get(): R|kotlin/Char|
public final const val s: R|kotlin/Short| = Short(20000)
public get(): R|kotlin/Short|
public final const val s1: R|kotlin/Short| = Short(1)
public get(): R|kotlin/Short|
public final const val str: R|kotlin/String|
public get(): R|kotlin/String|
@@ -1 +1,3 @@
public final val <P> R|P|.anotherJavaClass: R|java/lang/Class<P>|
public get(): R|java/lang/Class<P>|
@@ -1 +1,3 @@
public final val R|kotlin/Int|.itIs: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -1 +1,3 @@
public final val R|kotlin/Int|.ggg: R|java/lang/CharSequence|
public get(): R|java/lang/CharSequence|
@@ -1 +1,3 @@
public final val R|kotlin/Int|.ggg: R|java/lang/CharSequence?|
public get(): R|java/lang/CharSequence?|
@@ -1 +1,4 @@
public final var <P> R|P|.anotherJavaClass: R|java/lang/Class<P>|
public get(): R|java/lang/Class<P>|
public set(p: R|java/lang/Class<P>|): R|kotlin/Unit|
@@ -1 +1,4 @@
public final var R|kotlin/Int|.ggg: R|kotlin/Int|
public get(): R|kotlin/Int|
public set(p: R|kotlin/Int|): R|kotlin/Unit|
@@ -1 +1,4 @@
public final var <P, Q> R|kotlin/collections/Map<P, Q>|.asas: R|kotlin/Int|
public get(): R|kotlin/Int|
public set(i: R|kotlin/Int|): R|kotlin/Unit|
@@ -1 +1,7 @@
public final var R|kotlin/Int|.junk: R|kotlin/Short|
public get(): R|kotlin/Short|
public set(p: R|kotlin/Short|): R|kotlin/Unit|
public final val R|kotlin/String|.junk: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -1,3 +1,6 @@
public final val nonConstVal1: R|kotlin/Int|
public get(): R|kotlin/Int|
public final class C : R|kotlin/Any| {
public final val nonConstVal2: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -24,3 +27,4 @@ public abstract interface I : R|kotlin/Any| {
}
}
@@ -1 +1,3 @@
public final val nsVal: R|kotlin/Int|
public get(): R|kotlin/Int|
@@ -1 +1,4 @@
public final var nsVal: R|kotlin/Int|
public get(): R|kotlin/Int|
public set(value: R|kotlin/Int|): R|kotlin/Unit|
@@ -11,3 +11,4 @@ public abstract interface Trait : R|kotlin/Any| {
public get(): R|kotlin/String|
}
@@ -1 +1,12 @@
public final val R|kotlin/Long|.date1: R|kotlin/Any|
public get(): R|kotlin/Any|
internal final val R|kotlin/Long|.date12: R|kotlin/Any|
internal get(): R|kotlin/Any|
private final val R|kotlin/Long|.date3: R|java/util/Date|
private get(): R|java/util/Date|
public final val R|kotlin/Long|.date4: R|java/util/Date|
public get(): R|java/util/Date|
@@ -1 +1,28 @@
public final var R|kotlin/Long|.date1: R|kotlin/Any|
public get(): R|kotlin/Any|
public set(value: R|kotlin/Any|): R|kotlin/Unit|
public final var R|kotlin/Long|.date11: R|java/util/Date|
public get(): R|java/util/Date|
public set(value: R|java/util/Date|): R|kotlin/Unit|
public final var R|kotlin/Long|.date3: R|kotlin/Any|
public get(): R|kotlin/Any|
private set(value: R|kotlin/Any|): R|kotlin/Unit|
private final var R|kotlin/Long|.date4: R|java/util/Date|
private get(): R|java/util/Date|
private set(value: R|java/util/Date|): R|kotlin/Unit|
public final var R|kotlin/Long|.date7: R|java/util/Date|
public get(): R|java/util/Date|
public set(value: R|java/util/Date|): R|kotlin/Unit|
public final var R|kotlin/Long|.date8: R|java/util/Date|
public get(): R|java/util/Date|
internal set(value: R|java/util/Date|): R|kotlin/Unit|
public final var R|kotlin/Long|.date9: R|java/util/Date|
public get(): R|java/util/Date|
private set(value: R|java/util/Date|): R|kotlin/Unit|
@@ -3,3 +3,4 @@ public final fun array(a: R|kotlin/Array<kotlin/Int>|): R|ft<kotlin/Array<ft<kot
public final fun list(): R|ft<kotlin/collections/MutableList<ft<kotlin/String, kotlin/String?>!>, kotlin/collections/List<ft<kotlin/String, kotlin/String?>!>?>!|
public final fun printStream(): R|ft<java/io/PrintStream, java/io/PrintStream?>!|
@@ -1,3 +1,7 @@
public final typealias A1 = R|kotlin/String|
public final typealias A2 = R|kotlin/String|
@R|kotlin/annotation/Target|(allowedTargets = <implicitArrayOf>(R|kotlin/annotation/AnnotationTarget.TYPEALIAS|())) public final annotation class Ann : R|kotlin/Annotation| {
public final val value: R|kotlin/String|
public get(): R|kotlin/String|
@@ -5,3 +9,4 @@
public constructor(value: R|kotlin/String| = STUB): R|test/Ann|
}
@@ -1 +1,24 @@
public final val x1: R|test/S|
public get(): R|test/S|
public final val x2: R|test/SS|
public get(): R|test/SS|
public final val x3: R|test/SSS|
public get(): R|test/SSS|
public final val x4: R|test/S?|
public get(): R|test/S?|
public final val x5: R|test/SS?|
public get(): R|test/SS?|
public final val x6: R|test/SSS?|
public get(): R|test/SSS?|
public final typealias S = R|kotlin/String|
public final typealias SS = R|test/S|
public final typealias SSS = R|test/SS|
@@ -10,3 +10,9 @@ public final fun test5(x: R|test/LL<test/LL<kotlin/String>>|): R|kotlin/Unit|
public final fun test6(x: R|test/LLL<test/LLL<kotlin/String>>|): R|kotlin/Unit|
public final typealias L<T> = R|kotlin/collections/List<T>|
public final typealias LL<T> = R|test/L<T>|
public final typealias LLL<T> = R|test/LL<T>|
@@ -4,3 +4,6 @@ public final class Foo<T> : R|kotlin/Any| {
public constructor<T>(): R|test/Foo<T>|
}
public final typealias MyHandler<P> = R|(test/Foo<P>) -> kotlin/Unit|
@@ -1 +1,5 @@
internal final fun f(): R|kotlin/Int|
internal final val x: R|kotlin/Int|
internal get(): R|kotlin/Int|
@@ -1 +1,3 @@
private final val topLevelVal: R|kotlin/Int|
private get(): R|kotlin/Int|
@@ -1 +1,4 @@
internal final var topLevelVar: R|kotlin/Int|
internal get(): R|kotlin/Int|
private set(<set-?>: R|kotlin/Int|): R|kotlin/Unit|
@@ -8,11 +8,13 @@ package org.jetbrains.kotlin.fir
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.compileKotlinToDirAndGetModule
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.KotlinTestUtils.newConfiguration
@@ -32,7 +34,11 @@ abstract class AbstractFirLoadCompiledKotlin : AbstractFirResolveWithSessionTest
}
fun doTest(path: String) {
compileKtFileToTmpDir(path)
val moduleDescriptor = compileKtFileToTmpDir(path)
val packageFqName = FqName("test")
val allCompiledNames = DescriptorUtils.getAllDescriptors(moduleDescriptor.getPackage(packageFqName).memberScope)
.mapTo(sortedSetOf()) { it.name }
val configuration = newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, listOf(tmpdir), emptyList<File>())
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
@@ -40,22 +46,22 @@ abstract class AbstractFirLoadCompiledKotlin : AbstractFirResolveWithSessionTest
prepareProjectExtensions(environment.project)
val sessionWithDependency = createSession(environment, GlobalSearchScope.EMPTY_SCOPE)
checkPackageContent(sessionWithDependency, FqName("test"), path)
checkPackageContent(sessionWithDependency, packageFqName, allCompiledNames, path)
}
private fun compileKtFileToTmpDir(path: String) {
private fun compileKtFileToTmpDir(path: String): ModuleDescriptor {
val file = File(path)
val configuration = newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.MOCK_JDK, emptyList(), emptyList<File>())
val environment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
// We don't use ModuleDescriptor
compileKotlinToDirAndGetModule(listOf(file), tmpdir, environment)
return compileKotlinToDirAndGetModule(listOf(file), tmpdir, environment)
}
private fun checkPackageContent(
session: FirSession,
packageFqName: FqName,
declarationNames: Set<Name>,
testDataPath: String
) {
val provider = session.firSymbolProvider
@@ -63,17 +69,15 @@ abstract class AbstractFirLoadCompiledKotlin : AbstractFirResolveWithSessionTest
val builder = StringBuilder()
val firRenderer = FirRenderer(builder)
for (name in provider.getAllCallableNamesInPackage(packageFqName)) {
for (name in declarationNames) {
for (symbol in provider.getTopLevelCallableSymbols(packageFqName, name)) {
symbol.fir.accept(firRenderer)
builder.appendLine()
}
}
for (name in provider.getClassNamesInPackage(packageFqName)) {
val classLikeSymbol =
provider.getClassLikeSymbolByFqName(ClassId.topLevel(packageFqName.child(name))) as FirClassSymbol?
?: continue
for (name in declarationNames) {
val classLikeSymbol = provider.getClassLikeSymbolByFqName(ClassId.topLevel(packageFqName.child(name))) ?: continue
classLikeSymbol.fir.accept(firRenderer)
builder.appendLine()
}