ktFile has to return script declaration from stub as well

This commit is contained in:
Vladimir Dolzhenko
2020-07-29 16:51:19 +02:00
committed by Vladimir Dolzhenko
parent 4367d6631f
commit 6e016ce041
2 changed files with 28 additions and 3 deletions
@@ -21,6 +21,7 @@ import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.fileTypes.FileType
import com.intellij.psi.*
import com.intellij.psi.stubs.StubElement
import com.intellij.psi.tree.TokenSet
import com.intellij.psi.util.PsiTreeUtil
import com.intellij.util.ArrayFactory
import com.intellij.util.FileContentUtilCore
@@ -138,12 +139,12 @@ open class KtFile(viewProvider: FileViewProvider, val isCompiled: Boolean) :
override fun getFileType(): FileType = KotlinFileType.INSTANCE
override fun toString(): String = "KtFile: " + name
override fun toString(): String = "KtFile: $name"
override fun getDeclarations(): List<KtDeclaration> {
val stub = stub
return stub?.getChildrenByType(KtStubElementTypes.DECLARATION_TYPES, KtDeclaration.ARRAY_FACTORY)?.toList()
?: PsiTreeUtil.getChildrenOfTypeAsList(this, KtDeclaration::class.java)
return stub?.getChildrenByType(FILE_DECLARATION_TYPES, KtDeclaration.ARRAY_FACTORY)?.toList()
?: PsiTreeUtil.getChildrenOfTypeAsList(this, KtDeclaration::class.java)
}
fun <T : KtElementImplStub<out StubElement<*>>> findChildByTypeOrClass(
@@ -264,4 +265,8 @@ open class KtFile(viewProvider: FileViewProvider, val isCompiled: Boolean) :
// Modification count for Kotlin files is tracked entirely by KotlinCodeBlockModificationListener
return false
}
companion object {
val FILE_DECLARATION_TYPES = TokenSet.orSet(KtStubElementTypes.DECLARATION_TYPES, TokenSet.create(KtStubElementTypes.SCRIPT))
}
}