FIR IDE: fix uast import test after fixing import references

This commit is contained in:
Ilya Kirillov
2021-06-03 16:31:46 +02:00
committed by TeamCityServer
parent ae7a6dc742
commit be99f24278
@@ -6,11 +6,10 @@
package org.jetbrains.uast.test.kotlin package org.jetbrains.uast.test.kotlin
import com.intellij.psi.PsiClass import com.intellij.psi.PsiClass
import com.intellij.psi.PsiField
import com.intellij.psi.PsiMethod
import com.intellij.testFramework.TestDataPath import com.intellij.testFramework.TestDataPath
import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.jetbrains.kotlin.test.TestMetadata import org.jetbrains.kotlin.test.TestMetadata
import org.jetbrains.uast.UFile import org.jetbrains.uast.UFile
@@ -41,21 +40,32 @@ class FirUastResolveApiTest : AbstractFirUastTest() {
fun testImports() { fun testImports() {
doCheck("plugins/uast-kotlin/testData/Imports.kt") { _, uFile -> doCheck("plugins/uast-kotlin/testData/Imports.kt") { _, uFile ->
uFile.imports.forEach { uImport -> uFile.imports.forEach { uImport ->
if ((uImport.sourcePsi as? KtImportDirective)?.text?.contains("sleep") == true) {
//todo investigate
return@forEach
}
val resolvedImport = uImport.resolve() val resolvedImport = uImport.resolve()
?: throw IllegalStateException("Unresolved import: ${uImport.asRenderString()}") ?: throw IllegalStateException("Unresolved import: ${uImport.asRenderString()}")
val expected = when (resolvedImport) { val expected = when (resolvedImport) {
is PsiClass -> { is PsiClass -> {
// import java.lang.Thread.* // import java.lang.Thread.*
resolvedImport.name == "Thread" resolvedImport.name == "Thread" || resolvedImport.name == "UncaughtExceptionHandler"
}
is PsiMethod -> {
// import java.lang.Thread.(currentThread/sleep)
resolvedImport.name == "currentThread" || resolvedImport.name == "sleep"
}
is PsiField -> {
// import java.lang.Thread.NORM_PRIORITY
resolvedImport.name == "NORM_PRIORITY"
} }
is KtNamedFunction -> { is KtNamedFunction -> {
// import kotlin.collections.emptyList // import kotlin.collections.emptyList
resolvedImport.isTopLevel && resolvedImport.name == "emptyList" resolvedImport.isTopLevel && resolvedImport.name == "emptyList"
} }
is KtObjectDeclaration -> { is KtProperty -> {
// import kotlin.Int.Companion.SIZE_BYTES // import kotlin.Int.Companion.SIZE_BYTES
val selector = (uImport.importReference?.sourcePsi as? KtExpression)?.getQualifiedElementSelector() resolvedImport.name == "SIZE_BYTES"
resolvedImport.isCompanion() && selector?.text == "SIZE_BYTES"
} }
else -> false else -> false
} }