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`
This commit is contained in:
Denis Zharkov
2017-11-27 11:13:43 +03:00
parent 6007d244f3
commit 4ed6928e6b
2 changed files with 4 additions and 7 deletions
@@ -168,11 +168,7 @@ open class KtFile(viewProvider: FileViewProvider, val isCompiled: Boolean) :
override fun getClasses(): Array<PsiClass> {
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) {}
@@ -342,8 +342,9 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
class KtFileClassProviderImpl(val lightClassGenerationSupport: LightClassGenerationSupport) : KtFileClassProvider {
override fun getFileClasses(file: KtFile): Array<PsiClass> {
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<PsiClass>()