From 4ed6928e6bdcb937e52c9beee6562327c4eba587 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 27 Nov 2017 11:13:43 +0300 Subject: [PATCH] Avoid building stubs in KtFile::getClasses for compiled files In Gradle, JavaPsiFacade finds Kotlin compiled files as KtFile instances and tries to obtain classes from them. And while it returns an empty array anyway, it starts building unnecessary stub when calling `isScript` --- compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.kt | 6 +----- .../idea/caches/resolve/IDELightClassGenerationSupport.kt | 5 +++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.kt index 1d0d30e4677..a60d0a59236 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFile.kt @@ -168,11 +168,7 @@ open class KtFile(viewProvider: FileViewProvider, val isCompiled: Boolean) : override fun getClasses(): Array { val fileClassProvider = ServiceManager.getService(project, KtFileClassProvider::class.java) - // TODO We don't currently support finding light classes for scripts - return if (fileClassProvider != null && !isScript()) { - fileClassProvider.getFileClasses(this) - } - else PsiClass.EMPTY_ARRAY + return fileClassProvider?.getFileClasses(this) ?: PsiClass.EMPTY_ARRAY } override fun setPackageName(packageName: String) {} 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 c77895c6e36..87d59f6f284 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 @@ -342,8 +342,9 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG class KtFileClassProviderImpl(val lightClassGenerationSupport: LightClassGenerationSupport) : KtFileClassProvider { override fun getFileClasses(file: KtFile): Array { - if (file.isCompiled) { - return arrayOf() + // TODO We don't currently support finding light classes for scripts + if (file.isCompiled || file.isScript()) { + return PsiClass.EMPTY_ARRAY } val result = arrayListOf()