[Analysis API] use createSearchScopeByLibraryRoots for test libraries
As it is more similar to production. Also, fixed scope search for klib. Now we register main binary modules before to avoid duplication with libraries from createLibrariesByCompilerConfigurators as now we can have a declared library and regular sources ^KT-62888 ^KT-62651
This commit is contained in:
committed by
Space Team
parent
02d99769ff
commit
8de9d42b0d
+11
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.analysis.decompiler.konan.KlibMetaFileType
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.BuiltInDefinitionFile
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInFileType
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.file.KtClsFile
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtBinaryModule
|
||||
import org.jetbrains.kotlin.analysis.providers.*
|
||||
import org.jetbrains.kotlin.analysis.providers.impl.*
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
|
||||
@@ -66,10 +67,18 @@ object AnalysisApiBaseTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
||||
override fun registerProjectModelServices(project: MockProject, testServices: TestServices) {
|
||||
val moduleStructure = testServices.ktModuleProvider.getModuleStructure()
|
||||
val allSourceKtFiles = moduleStructure.mainModules.flatMap { it.files.filterIsInstance<KtFile>() }
|
||||
val binaryDependencies = moduleStructure.binaryModules.toMutableSet()
|
||||
for (mainModule in moduleStructure.mainModules) {
|
||||
val ktModule = mainModule.ktModule
|
||||
if (ktModule !is KtBinaryModule) continue
|
||||
binaryDependencies -= ktModule
|
||||
}
|
||||
|
||||
val roots = StandaloneProjectFactory.getVirtualFilesForLibraryRoots(
|
||||
moduleStructure.binaryModules.flatMap { binary -> binary.getBinaryRoots() },
|
||||
binaryDependencies.flatMap { binary -> binary.getBinaryRoots() },
|
||||
testServices.environmentManager.getProjectEnvironment()
|
||||
).distinct()
|
||||
|
||||
project.apply {
|
||||
registerService(KotlinAnnotationsResolverFactory::class.java, KotlinStaticAnnotationsResolverFactory(project, allSourceKtFiles))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user