KT IDE: use proper package symbol PSI to fix invalidated access exception
This commit is contained in:
+13
-1
@@ -9,11 +9,13 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.impl.file.PsiPackageImpl
|
import com.intellij.psi.impl.file.PsiPackageImpl
|
||||||
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
|
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.cached
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.*
|
||||||
|
import org.jetbrains.kotlin.idea.stubindex.PackageIndexUtil
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
class KtFirPackageSymbol(
|
class KtFirPackageSymbol(
|
||||||
@@ -22,7 +24,7 @@ class KtFirPackageSymbol(
|
|||||||
override val token: ValidityToken
|
override val token: ValidityToken
|
||||||
) : KtPackageSymbol(), ValidityTokenOwner {
|
) : KtPackageSymbol(), ValidityTokenOwner {
|
||||||
override val psi: PsiElement? by cached {
|
override val psi: PsiElement? by cached {
|
||||||
PsiPackageImpl(PsiManager.getInstance(project), fqName.asString().replace('/', '.'))
|
KtPackage(PsiManager.getInstance(project), fqName, GlobalSearchScope.allScope(project)/*TODO*/)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val origin: KtSymbolOrigin
|
override val origin: KtSymbolOrigin
|
||||||
@@ -33,3 +35,13 @@ class KtFirPackageSymbol(
|
|||||||
session.firSymbolBuilder.createPackageSymbolIfOneExists(fqName)
|
session.firSymbolBuilder.createPackageSymbolIfOneExists(fqName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class KtPackage(
|
||||||
|
manager: PsiManager,
|
||||||
|
private val fqName: FqName,
|
||||||
|
private val scope: GlobalSearchScope
|
||||||
|
) : PsiPackageImpl(manager, fqName.asString().replace('/', '.')) {
|
||||||
|
override fun copy() = KtPackage(manager, fqName, scope)
|
||||||
|
|
||||||
|
override fun isValid(): Boolean = PackageIndexUtil.packageExists(fqName, scope, project)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user