FIR: Get rid of PSI dependency in the :fir:resolve module

This commit is contained in:
Roman Golyshev
2021-02-19 07:20:06 +00:00
committed by Space
parent 6b453d9b23
commit 74bdb2398e
3 changed files with 19 additions and 12 deletions
+1 -2
View File
@@ -14,10 +14,9 @@ dependencies {
api(project(":compiler:fir:tree"))
api(kotlinxCollectionsImmutable())
implementation(project(":core:util.runtime"))
implementation(project(":compiler:psi"))
compileOnly(project(":kotlin-reflect-api"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core", "guava", rootProject = rootProject) }
compileOnly(intellijCoreDep()) { includeJars("guava", rootProject = rootProject) }
}
sourceSets {
@@ -19,7 +19,6 @@ import org.jetbrains.kotlin.fir.resolve.typeForQualifier
import org.jetbrains.kotlin.fir.types.FirTypeProjection
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
const val ROOT_PREFIX_FOR_IDE_RESOLUTION_MODE = "_root_ide_package_"
@@ -92,7 +91,7 @@ class FirQualifiedNameResolver(private val components: BodyResolveComponents) {
}
return buildResolvedQualifier {
this.source = getWholeQualifierSource(source, qualifierPartsToDrop)
this.source = source?.getWholeQualifierSourceIfPossible(qualifierPartsToDrop)
packageFqName = resolved.packageFqName
relativeClassFqName = resolved.relativeClassFqName
symbol = resolved.classSymbol
@@ -104,12 +103,4 @@ class FirQualifiedNameResolver(private val components: BodyResolveComponents) {
return null
}
private fun getWholeQualifierSource(qualifierStartSource: FirSourceElement?, stepsToWholeQualifier: Int): FirSourceElement? {
if (qualifierStartSource !is FirRealPsiSourceElement<*>) return qualifierStartSource
val qualifierStart = qualifierStartSource.psi
val wholeQualifier = qualifierStart.parentsWithSelf.drop(stepsToWholeQualifier).first()
return wholeQualifier.toFirPsiSourceElement()
}
}