181: LightClasses: using viewProvider from KtFile

#KT-22929
This commit is contained in:
Nicolay Mitropolsky
2018-02-21 23:24:32 +03:00
committed by Nikolay Krasko
parent 1125926009
commit 585348c590
3 changed files with 3 additions and 15 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ dependencies {
compile(project(":compiler:frontend"))
compile(project(":compiler:frontend.java"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
compileOnly(intellijDep()) { includeJars("annotations", "platform-impl", "asm-all", "trove4j", "guava", rootProject = rootProject) }
compileOnly(intellijDep()) { includeJars("annotations", "asm-all", "trove4j", "guava", rootProject = rootProject) }
}
sourceSets {
@@ -26,7 +26,6 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.impl.compiled.ClsFileImpl
import com.intellij.psi.impl.java.stubs.PsiJavaFileStub
import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl
import org.jetbrains.kotlin.asJava.elements.getFileViewProviderForLightClass
import com.intellij.psi.impl.source.tree.TreeElement
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.config.CompilerConfiguration
@@ -79,7 +78,7 @@ private fun createJavaFileStub(project: Project, packageFqName: FqName, files: C
val javaFileStub = PsiJavaFileStubImpl(packageFqName.asString(), /*compiled = */true)
javaFileStub.psiFactory = ClsWrapperStubPsiFactory.INSTANCE
val fakeFile = object : ClsFileImpl(getFileViewProviderForLightClass(files.first())) {
val fakeFile = object : ClsFileImpl(files.first().viewProvider) {
override fun getStub() = javaFileStub
override fun getPackageName() = packageFqName.asString()
@@ -17,26 +17,22 @@
package org.jetbrains.kotlin.asJava.elements
import com.intellij.pom.java.LanguageLevel
import com.intellij.psi.ClassFileViewProvider
import com.intellij.psi.FileViewProvider
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.impl.compiled.ClsFileImpl
import com.intellij.psi.impl.source.tree.injected.InjectedFileViewProvider
import com.intellij.psi.stubs.PsiClassHolderFileStub
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
open class FakeFileForLightClass(
val ktFile: KtFile,
private val lightClass: () -> KtLightClass,
private val stub: () -> PsiClassHolderFileStub<*>,
private val packageFqName: FqName = ktFile.packageFqName
) : ClsFileImpl(getFileViewProviderForLightClass(ktFile)) {
) : ClsFileImpl(ktFile.viewProvider) {
override fun getPackageName() = packageFqName.asString()
override fun getStub() = stub()
@@ -85,10 +81,3 @@ open class FakeFileForLightClass(
override fun isPhysical() = false
}
fun getFileViewProviderForLightClass(ktFile: KtFile): FileViewProvider {
ktFile.viewProvider.safeAs<InjectedFileViewProvider>()?.let { return it }
return ClassFileViewProvider(
ktFile.manager, ktFile.virtualFile ?: ktFile.originalFile.virtualFile ?: ktFile.viewProvider.virtualFile
)
}