[LC] render all type annotations in tests

^KT-66603
This commit is contained in:
Dmitrii Gridin
2024-03-15 17:15:55 +01:00
committed by Space Team
parent 66d1839d20
commit 3c8a95e623
38 changed files with 615 additions and 143 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.asJava.LightClassTestCommon
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.asJava.renderClass
import org.jetbrains.kotlin.light.classes.symbol.base.service.getLightClassesFromFile
import org.jetbrains.kotlin.light.classes.symbol.base.service.withExtendedTypeRenderer
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.isValidJavaFqName
import org.jetbrains.kotlin.psi.KtFile
@@ -55,8 +54,10 @@ abstract class AbstractSymbolLightClassesByPsiTest(
TestCase.assertEquals(lc, lcViaFinder)
}
return withExtendedTypeRenderer(testDataFile) {
lightClasses.sortedBy { it.qualifiedName ?: it.name.toString() }.joinToString("\n\n") { it.renderClass() }
return lightClasses.sortedBy {
it.qualifiedName ?: it.name.toString()
}.joinToString("\n\n") {
it.renderClass()
}
}
}
@@ -7,22 +7,10 @@ package org.jetbrains.kotlin.light.classes.symbol.base.service
import com.intellij.psi.PsiClass
import com.intellij.psi.SyntaxTraverser
import org.jetbrains.kotlin.asJava.PsiClassRenderer
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.asJava.toLightElements
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile
import java.nio.file.Path
internal inline fun <R> withExtendedTypeRenderer(testDataFile: Path, action: () -> R): R {
val extendedTypeRendererOld = PsiClassRenderer.extendedTypeRenderer.get()
return try {
PsiClassRenderer.extendedTypeRenderer.set(testDataFile.toString().endsWith("typeAnnotations.kt"))
action()
} finally {
PsiClassRenderer.extendedTypeRenderer.set(extendedTypeRendererOld)
}
}
internal fun getLightClassesFromFile(ktFile: KtFile): List<PsiClass> {
val ktClasses = SyntaxTraverser.psiTraverser(ktFile).filter(KtClassOrObject::class.java).toList()