diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt index 9109fc358ab..51627e655c4 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt @@ -25,6 +25,7 @@ import com.intellij.util.Function import com.intellij.util.SmartList import com.intellij.util.containers.ContainerUtil import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.asJava.LightClassBuilder import org.jetbrains.kotlin.asJava.LightClassGenerationSupport import org.jetbrains.kotlin.asJava.builder.* import org.jetbrains.kotlin.asJava.classes.KtLightClass @@ -75,7 +76,7 @@ class CliLightClassGenerationSupport(project: Project) : LightClassGenerationSup trace.setKotlinCodeAnalyzer(codeAnalyzer) } - override fun createLightClassDataHolderForClassOrObject(classOrObject: KtClassOrObject, builder: (LightClassConstructionContext) -> LightClassBuilderResult): LightClassDataHolder { + override fun createDataHolderForClassOrObject(classOrObject: KtClassOrObject, builder: LightClassBuilder): LightClassDataHolder { //force resolve companion for light class generation bindingContext.get(BindingContext.CLASS, classOrObject)?.companionObjectDescriptor @@ -171,8 +172,8 @@ class CliLightClassGenerationSupport(project: Project) : LightClassGenerationSup } } - override fun createLightClassDataHolderForFacade(files: Collection, build: (LightClassConstructionContext) -> LightClassBuilderResult): LightClassDataHolder { - val (stub, _, diagnostics) = build(getContext()) + override fun createDataHolderForFacade(files: Collection, builder: LightClassBuilder): LightClassDataHolder { + val (stub, _, diagnostics) = builder(getContext()) return LightClassDataHolderImpl(stub, diagnostics) } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt index 5aee7c7a977..207467c489e 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassGenerationSupport.kt @@ -32,15 +32,13 @@ import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingContext +typealias LightClassBuilder = (LightClassConstructionContext) -> LightClassBuilderResult + abstract class LightClassGenerationSupport { - abstract fun createLightClassDataHolderForClassOrObject( - classOrObject: KtClassOrObject, builder: (LightClassConstructionContext) -> LightClassBuilderResult - ): LightClassDataHolder + abstract fun createDataHolderForClassOrObject(classOrObject: KtClassOrObject, builder: LightClassBuilder): LightClassDataHolder - abstract fun createLightClassDataHolderForFacade( - files: Collection, build: (LightClassConstructionContext) -> LightClassBuilderResult - ): LightClassDataHolder + abstract fun createDataHolderForFacade(files: Collection, builder: LightClassBuilder): LightClassDataHolder abstract fun findClassOrObjectDeclarations(fqName: FqName, searchScope: GlobalSearchScope): Collection diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt index 40c066606cc..d815e5639e0 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/LightClassDataProvider.kt @@ -41,7 +41,7 @@ class LightClassDataProviderForClassOrObject(private val classOrObject: KtClassO private fun computeLightClassData(): LightClassDataHolder { val file = classOrObject.containingKtFile val packageFqName = file.packageFqName - return LightClassGenerationSupport.getInstance(classOrObject.project).createLightClassDataHolderForClassOrObject(classOrObject) { + return LightClassGenerationSupport.getInstance(classOrObject.project).createDataHolderForClassOrObject(classOrObject) { constructionContext -> buildLightClass(packageFqName, listOf(file), ClassFilterForClassOrObject(classOrObject), constructionContext) { state, files -> @@ -72,7 +72,7 @@ sealed class LightClassDataProviderForFileFacade constructor( abstract fun findFiles(): Collection private fun computeLightClassData(files: Collection): LightClassDataHolder { - return LightClassGenerationSupport.getInstance(project).createLightClassDataHolderForFacade(files) { + return LightClassGenerationSupport.getInstance(project).createDataHolderForFacade(files) { constructionContext -> buildLightClass(facadeFqName.parent(), files, ClassFilterForFacade, constructionContext) generate@ { state, files -> diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index cd617625f65..924070e3d5c 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.idea.caches.resolve -import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.ClassFileViewProvider @@ -27,6 +26,7 @@ import com.intellij.psi.impl.compiled.ClsClassImpl import com.intellij.psi.impl.compiled.ClsFileImpl import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.asJava.LightClassBuilder import org.jetbrains.kotlin.asJava.LightClassGenerationSupport import org.jetbrains.kotlin.asJava.builder.ClsWrapperStubPsiFactory import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder @@ -38,7 +38,10 @@ import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName -import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.* +import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.ClsJavaStubByVirtualFileCache +import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.IDELightClassContexts +import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.KtLightClassForDecompiledDeclaration +import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.LazyLightClassDataHolder import org.jetbrains.kotlin.idea.decompiler.classFile.KtClsFile import org.jetbrains.kotlin.idea.decompiler.navigation.SourceNavigationHelper import org.jetbrains.kotlin.idea.stubindex.* @@ -57,9 +60,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG private val scopeFileComparator = JavaElementFinder.byClasspathComparator(GlobalSearchScope.allScope(project)) private val psiManager: PsiManager = PsiManager.getInstance(project) - override fun createLightClassDataHolderForClassOrObject( - classOrObject: KtClassOrObject, builder: LightClassBuilder - ): LightClassDataHolder { + override fun createDataHolderForClassOrObject(classOrObject: KtClassOrObject, builder: LightClassBuilder): LightClassDataHolder { return if (classOrObject.isLocal) { LazyLightClassDataHolder( builder, @@ -77,7 +78,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG } - override fun createLightClassDataHolderForFacade(files: Collection, builder: LightClassBuilder): LightClassDataHolder { + override fun createDataHolderForFacade(files: Collection, builder: LightClassBuilder): LightClassDataHolder { assert(!files.isEmpty()) { "No files in facade" } val sortedFiles = files.sortedWith(scopeFileComparator) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/LazyLightClassDataHolder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/LazyLightClassDataHolder.kt index 9d2592af853..0c60af0f5c7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/LazyLightClassDataHolder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/LazyLightClassDataHolder.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.caches.resolve.lightClasses import com.intellij.psi.PsiClass import com.intellij.psi.PsiClassType import com.intellij.psi.impl.java.stubs.PsiJavaFileStub +import org.jetbrains.kotlin.asJava.LightClassBuilder import org.jetbrains.kotlin.asJava.builder.* import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.elements.KtLightField @@ -28,7 +29,6 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethodImpl import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.psi.KtClassOrObject -typealias LightClassBuilder = (LightClassConstructionContext) -> LightClassBuilderResult typealias LightClassContextProvider = () -> LightClassConstructionContext class LazyLightClassDataHolder(