[Analysis API Standalone] refactoring, extract stub create to a separate function
This commit is contained in:
committed by
Space Team
parent
b6fdd7cacc
commit
9c85857b68
+21
-16
@@ -19,6 +19,8 @@ import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import com.intellij.util.indexing.FileContent
|
||||
import com.intellij.util.indexing.FileContentImpl
|
||||
import org.jetbrains.kotlin.analysis.decompiler.konan.K2KotlinNativeMetadataDecompiler
|
||||
import org.jetbrains.kotlin.analysis.decompiler.konan.KlibMetaFileType
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInsVirtualFileProvider
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInDecompiler
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInFileType
|
||||
@@ -302,22 +304,8 @@ public class KotlinStaticDeclarationProviderFactory(
|
||||
VfsUtilCore.visitChildrenRecursively(additionalRoot, object : VirtualFileVisitor<Void>() {
|
||||
override fun visitFile(file: VirtualFile): Boolean {
|
||||
if (!file.isDirectory) {
|
||||
val fileContent = FileContentImpl.createByFile(file)
|
||||
when {
|
||||
binaryClassCache.isKotlinJvmCompiledFile(file, fileContent.content) &&
|
||||
file.fileType == JavaClassFileType.INSTANCE -> {
|
||||
(KotlinClsStubBuilder().buildFileStub(fileContent) as? KotlinFileStubImpl)?.let { stubs.put(file, it) }
|
||||
}
|
||||
file.fileType == KotlinBuiltInFileType
|
||||
&& file.extension != BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION -> {
|
||||
(builtInDecompiler.stubBuilder.buildFileStub(fileContent) as? KotlinFileStubImpl)?.let {
|
||||
stubs.put(
|
||||
file,
|
||||
it
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
val stub = buildStubByVirtualFile(file, binaryClassCache) ?: return true
|
||||
stubs.put(file, stub)
|
||||
}
|
||||
return true
|
||||
}
|
||||
@@ -341,6 +329,23 @@ public class KotlinStaticDeclarationProviderFactory(
|
||||
}
|
||||
}
|
||||
|
||||
private fun buildStubByVirtualFile(file: VirtualFile, binaryClassCache: ClsKotlinBinaryClassCache): KotlinFileStubImpl? {
|
||||
val fileContent = FileContentImpl.createByFile(file)
|
||||
val fileType = file.fileType
|
||||
val stubBuilder = when {
|
||||
binaryClassCache.isKotlinJvmCompiledFile(file, fileContent.content) && fileType == JavaClassFileType.INSTANCE -> {
|
||||
KotlinClsStubBuilder()
|
||||
}
|
||||
fileType == KotlinBuiltInFileType
|
||||
&& file.extension != BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION -> {
|
||||
builtInDecompiler.stubBuilder
|
||||
}
|
||||
|
||||
else -> return null
|
||||
}
|
||||
return stubBuilder.buildFileStub(fileContent) as? KotlinFileStubImpl
|
||||
}
|
||||
|
||||
override fun createDeclarationProvider(scope: GlobalSearchScope, contextualModule: KtModule?): KotlinDeclarationProvider {
|
||||
return KotlinStaticDeclarationProvider(index, scope)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user