[FIR IDE] Implement own fir light classes support

This commit is contained in:
Igor Yakovlev
2021-07-01 12:57:11 +02:00
parent 7fff282565
commit b64f7909b8
15 changed files with 209 additions and 73 deletions
@@ -8,9 +8,11 @@ package org.jetbrains.kotlin.asJava
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiManager
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile
@@ -56,6 +58,8 @@ abstract class KotlinAsJavaSupport {
abstract fun getFakeLightClass(classOrObject: KtClassOrObject): KtFakeLightClass
abstract fun createFacadeForSyntheticFile(facadeClassFqName: FqName, file: KtFile): PsiClass
companion object {
@JvmStatic
fun getInstance(project: Project): KotlinAsJavaSupport {
@@ -282,15 +282,15 @@ open class KtLightClassForFacadeImpl constructor(
}
fun createForSyntheticFile(
manager: PsiManager,
facadeClassFqName: FqName,
file: KtFile
): KtLightClassForFacade {
val project = file.project
// TODO: refactor, using cached value doesn't make sense for this case
val cachedValue = CachedValuesManager.getManager(manager.project).createCachedValue(
LightClassDataProviderForFileFacade.ByFile(manager.project, facadeClassFqName, file), false
val cachedValue = CachedValuesManager.getManager(project).createCachedValue(
LightClassDataProviderForFileFacade.ByFile(project, facadeClassFqName, file), false
)
return KtLightClassForFacadeImpl(manager, facadeClassFqName, cachedValue, listOf(file))
return KtLightClassForFacadeImpl(PsiManager.getInstance(project), facadeClassFqName, cachedValue, listOf(file))
}
}
}