AA: add support VirtualFile inputs to binary module

^KT-68896 fixed
diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt
index 158b7d8..7b32994 100644
--- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt
+++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt
@@ -6,8 +6,10 @@
 package org.jetbrains.kotlin.analysis.api.descriptors.components
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.search.GlobalSearchScope
 import com.intellij.psi.search.ProjectScope
+import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
 import org.jetbrains.kotlin.analysis.api.KaSession
 import org.jetbrains.kotlin.analysis.api.components.KaSymbolRelationProvider
 import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session
@@ -167,6 +169,9 @@
             override val librarySources: KaLibrarySourceModule? = null
             override val isSdk: Boolean = false
             override val binaryRoots: Collection<Path> = listOf(libraryPath)
+
+            @KaExperimentalApi
+            override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
             override val directRegularDependencies: List<KaModule> = emptyList()
             override val directDependsOnDependencies: List<KaModule> = emptyList()
             override val transitiveDependsOnDependencies: List<KaModule> = emptyList()
diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt
index a6479df..26f1632 100644
--- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt
+++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt
@@ -124,11 +124,15 @@
             testServices.environmentManager.getProjectEnvironment(),
         ).distinct()
 
+        val mainBinaryVirtualFiles = mainBinaryModules.flatMap { it.binaryVirtualFiles }.distinct()
+
         val sharedBinaryRoots = StandaloneProjectFactory.getVirtualFilesForLibraryRoots(
             sharedBinaryDependencies.flatMap { binary -> binary.binaryRoots },
             testServices.environmentManager.getProjectEnvironment()
         ).distinct()
 
+        val sharedBinaryVirtualFiles = sharedBinaryDependencies.flatMap { it.binaryVirtualFiles }.distinct()
+
         project.apply {
             registerService(KotlinAnnotationsResolverFactory::class.java, KotlinStandaloneAnnotationsResolverFactory(project, testKtFiles))
 
@@ -143,8 +147,8 @@
                 val declarationProviderFactory = KotlinStandaloneDeclarationProviderFactory(
                     project,
                     testKtFiles,
-                    binaryRoots = mainBinaryRoots,
-                    sharedBinaryRoots = sharedBinaryRoots,
+                    binaryRoots = mainBinaryRoots + mainBinaryVirtualFiles,
+                    sharedBinaryRoots = sharedBinaryRoots + sharedBinaryVirtualFiles,
                     skipBuiltins = testServices.moduleStructure.allDirectives.contains(NO_RUNTIME),
                     shouldBuildStubsForBinaryLibraries = shouldBuildStubsForBinaryLibraries,
                 )
diff --git a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt
index 879ccf0..0bfc9a7 100644
--- a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt
+++ b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt
@@ -342,10 +342,13 @@
         .flatMap { it.getJavaRoots(environment) }
 
     fun createSearchScopeByLibraryRoots(
-        roots: Collection<Path>,
+        binaryRoots: Collection<Path>,
+        binaryVirtualFiles: Collection<VirtualFile>,
         environment: KotlinCoreProjectEnvironment,
     ): GlobalSearchScope {
-        val virtualFileUrls = getVirtualFileUrlsForLibraryRootsRecursively(roots, environment)
+        val virtualFileUrlsFromBinaryRoots = getVirtualFileUrlsForLibraryRootsRecursively(binaryRoots, environment)
+        val virtualFileUrlsFromBinaryVirtualFiles = getVirtualFileUrlsForLibraryRootsRecursively(binaryVirtualFiles)
+        val virtualFileUrls = virtualFileUrlsFromBinaryRoots + virtualFileUrlsFromBinaryVirtualFiles
 
         return object : GlobalSearchScope(environment.project) {
             override fun contains(file: VirtualFile): Boolean = file.url in virtualFileUrls
@@ -370,6 +373,17 @@
             }
         }
 
+    @OptIn(KaImplementationDetail::class)
+    private fun getVirtualFileUrlsForLibraryRootsRecursively(
+        binaryVirtualFiles: Collection<VirtualFile>
+    ): Set<String> =
+        buildSet {
+            for (vf in binaryVirtualFiles) {
+                LibraryUtils.getAllVirtualFilesFromRoot(vf, includeRoot = true)
+                    .mapTo(this) { it.url }
+            }
+        }
+
     fun getVirtualFilesForLibraryRoots(
         roots: Collection<Path>,
         environment: KotlinCoreProjectEnvironment,
@@ -420,10 +434,12 @@
         }
     }
 
+    @OptIn(KaExperimentalApi::class)
     private fun KaLibraryModule.getJavaRoots(
         environment: KotlinCoreProjectEnvironment,
     ): List<JavaRoot> {
-        return getVirtualFilesForLibraryRoots(binaryRoots, environment).map { root ->
+        val binaryRootsAsVirtualFiles = getVirtualFilesForLibraryRoots(binaryRoots, environment) + binaryVirtualFiles
+        return binaryRootsAsVirtualFiles.map { root ->
             JavaRoot(root, JavaRoot.RootType.BINARY)
         }
     }
diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt
index d53fa58..b034ff7 100644
--- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt
+++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt
@@ -5,11 +5,13 @@
 
 package org.jetbrains.kotlin.analysis.project.structure.builder
 
+import com.intellij.openapi.vfs.VirtualFile
 import java.nio.file.Path
 
 @KtModuleBuilderDsl
 public abstract class KtBinaryModuleBuilder : KtModuleBuilder() {
     private val binaryRoots: MutableList<Path> = mutableListOf()
+    private val binaryVirtualFiles: MutableList<VirtualFile> = mutableListOf()
 
     /**
      * Adds a [root] to the current library.
@@ -36,4 +38,14 @@
     }
 
     protected fun getBinaryRoots(): List<Path> = binaryRoots.distinct()
+
+    public fun addBinaryVirtualFile(virtualFile: VirtualFile) {
+        binaryVirtualFiles.add(virtualFile)
+    }
+
+    public fun addBinaryVirtualFiles(virtualFiles: Collection<VirtualFile>) {
+        binaryVirtualFiles.addAll(virtualFiles)
+    }
+
+    protected fun getBinaryVirtualFiles(): List<VirtualFile> = binaryVirtualFiles.distinct()
 }
\ No newline at end of file
diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt
index 3128be3..dc8ab76 100644
--- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt
+++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt
@@ -5,6 +5,7 @@
 
 package org.jetbrains.kotlin.analysis.project.structure.builder
 
+import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
 import org.jetbrains.kotlin.analysis.api.standalone.base.projectStructure.StandaloneProjectFactory
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule
@@ -23,9 +24,12 @@
 
     override fun build(): KaLibraryModule = build(isSdk = false)
 
+    @OptIn(KaExperimentalApi::class)
     protected fun build(isSdk: Boolean): KaLibraryModule {
         val binaryRoots = getBinaryRoots()
-        val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment)
+        val binaryVirtualFiles = getBinaryVirtualFiles()
+        val contentScope =
+            StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, binaryVirtualFiles, kotlinCoreProjectEnvironment)
         return KaLibraryModuleImpl(
             directRegularDependencies,
             directDependsOnDependencies,
@@ -34,6 +38,7 @@
             platform,
             kotlinCoreProjectEnvironment.project,
             binaryRoots,
+            binaryVirtualFiles,
             libraryName,
             librarySources,
             isSdk,
diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt
index 3f01881..500d706 100644
--- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt
+++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt
@@ -6,7 +6,9 @@
 package org.jetbrains.kotlin.analysis.project.structure.impl
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.search.GlobalSearchScope
+import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
 import org.jetbrains.kotlin.analysis.api.KaPlatformInterface
 import org.jetbrains.kotlin.analysis.api.platform.projectStructure.computeTransitiveDependsOnDependencies
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
@@ -15,6 +17,7 @@
 import org.jetbrains.kotlin.platform.TargetPlatform
 import java.nio.file.Path
 
+@KaExperimentalApi
 internal class KaLibraryModuleImpl(
     override val directRegularDependencies: List<KaModule>,
     override val directDependsOnDependencies: List<KaModule>,
@@ -23,6 +26,7 @@
     override val targetPlatform: TargetPlatform,
     override val project: Project,
     override val binaryRoots: Collection<Path>,
+    override val binaryVirtualFiles: Collection<VirtualFile>,
     override val libraryName: String,
     override val librarySources: KaLibrarySourceModule?,
 
diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt
index 55e9916..0685cde 100644
--- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt
+++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt
@@ -19,6 +19,8 @@
 import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol
 import org.jetbrains.kotlin.analysis.api.symbols.KaNamedFunctionSymbol
 import org.jetbrains.kotlin.analysis.api.types.KaClassType
+import org.jetbrains.kotlin.analysis.api.standalone.StandaloneAnalysisAPISession
+import org.jetbrains.kotlin.analysis.api.standalone.base.projectStructure.StandaloneProjectFactory
 import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtLibraryModule
 import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtSdkModule
 import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtSourceModule
@@ -281,6 +283,88 @@
                 )
             }
         }
+        checkOtherModuleUsage(session, sourceModule)
+    }
+
+    @Test
+    fun testKotlinBinaryModuleSessionWithVirtualFile() {
+        val root = "otherModuleUsage"
+        lateinit var sourceModule: KaSourceModule
+        val session = buildStandaloneAnalysisAPISession(disposable) {
+            buildKtModuleProvider {
+                platform = JvmPlatforms.defaultJvmPlatform
+                val compiledJar = compileToJar(testDataPath(root).resolve("dependent"))
+                val dep = addModule(
+                    buildKtLibraryModule {
+                        // addBinaryRoot(compiledJar)
+                        // Instead, add [VirtualFile]
+                        val virtualFiles =
+                            StandaloneProjectFactory.getVirtualFilesForLibraryRoots(listOf(compiledJar), kotlinCoreProjectEnvironment)
+                        addBinaryVirtualFiles(virtualFiles)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        libraryName = "dependent"
+                    }
+                )
+                sourceModule = addModule(
+                    buildKtSourceModule {
+                        addSourceRoot(testDataPath(root).resolve("main"))
+                        addRegularDependency(dep)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        moduleName = "main"
+                    }
+                )
+            }
+        }
+        checkOtherModuleUsage(session, sourceModule)
+    }
+
+    @Test
+    fun testKotlinSourceAndBinaryModuleSessionWithVirtualFile() {
+        val root = "otherModuleUsage"
+        lateinit var sourceModule: KaSourceModule
+        val session = buildStandaloneAnalysisAPISession(disposable) {
+            buildKtModuleProvider {
+                platform = JvmPlatforms.defaultJvmPlatform
+                val compiledJar = compileToJar(testDataPath(root).resolve("dependent"))
+                val dep = addModule(
+                    buildKtLibraryModule {
+                        // addBinaryRoot(compiledJar)
+                        // Instead, add [VirtualFile]
+                        val virtualFiles =
+                            StandaloneProjectFactory.getVirtualFilesForLibraryRoots(listOf(compiledJar), kotlinCoreProjectEnvironment)
+                        addBinaryVirtualFiles(virtualFiles)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        libraryName = "dependent"
+                    }
+                )
+                sourceModule = addModule(
+                    buildKtSourceModule {
+                        // addSourceRoot(testDataPath(root).resolve("main"))
+                        // Instead, add [VirtualFile] on-the-fly
+                        val virtualFile = createDumbVirtualFile(
+                            project,
+                            "test.kt",
+                            """
+                                fun main() {
+                                    foo()
+                                }
+                            """.trimIndent()
+                        )
+                        addSourceVirtualFile(virtualFile)
+                        addRegularDependency(dep)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        moduleName = "main"
+                    }
+                )
+            }
+        }
+        checkOtherModuleUsage(session, sourceModule)
+    }
+
+    private fun checkOtherModuleUsage(
+        session: StandaloneAnalysisAPISession,
+        sourceModule: KaSourceModule,
+    ) {
         val ktFile = session.modulesWithFiles.getValue(sourceModule).single() as KtFile
         val ktCallExpression = ktFile.findDescendantOfType<KtCallExpression>()!!
         ktCallExpression.assertIsCallOf(CallableId(FqName.ROOT, Name.identifier("foo")))
diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt
index db677ab..177be9f 100644
--- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt
+++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt
@@ -59,6 +59,20 @@
     return testKlib
 }
 
+internal fun compileToJar(sourceRoot: Path): Path {
+    val ktFiles = Files.walk(sourceRoot).asSequence().filter { it.extension == "kt" }.toList()
+    val testJar = KtTestUtil.tmpDir("testLibrary").resolve("library.jar").toPath()
+
+    val arguments = buildList {
+        ktFiles.mapTo(this) { it.absolutePathString() }
+        add("-d")
+        add(testJar.absolutePathString())
+    }
+    MockLibraryUtil.runJvmCompiler(arguments)
+
+    return testJar
+}
+
 internal fun createDumbVirtualFile(
     project: Project,
     fileName: String,
diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt
index f4d634e..c9e8e04 100644
--- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt
+++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt
@@ -8,6 +8,7 @@
 package org.jetbrains.kotlin.analysis.api.projectStructure
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.PsiFile
 import com.intellij.psi.search.GlobalSearchScope
 import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
@@ -141,6 +142,12 @@
     public val binaryRoots: Collection<Path>
 
     /**
+     * A list of binary files in [VirtualFile] form if the library module represents a library in in-memory file system.
+     */
+    @KaExperimentalApi
+    public val binaryVirtualFiles: Collection<VirtualFile>
+
+    /**
      * A library source, if any. If current module is a binary JAR, then [librarySources] corresponds to the sources JAR.
      */
     public val librarySources: KaLibrarySourceModule?
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt
index eb3204e..cdf8c4e 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt
@@ -6,6 +6,7 @@
 package org.jetbrains.kotlin.analysis.test.framework.projectStructure
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.search.GlobalSearchScope
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule
@@ -26,5 +27,7 @@
     override val directDependsOnDependencies: MutableList<KaModule> = mutableListOf()
     override val directFriendDependencies: MutableList<KaModule> = mutableListOf()
 
+    override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
+
     override fun toString(): String = libraryName
 }
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt
index 79a888a..68f9dac9 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt
@@ -6,6 +6,7 @@
 package org.jetbrains.kotlin.analysis.test.framework.projectStructure
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.PsiFile
 import com.intellij.psi.search.GlobalSearchScope
 import org.jetbrains.kotlin.analysis.api.platform.projectStructure.computeTransitiveDependsOnDependencies
@@ -73,6 +74,7 @@
         val jdkHomePaths = StandaloneProjectFactory.getDefaultJdkModulePaths(project, jdkHome.toPath())
         val scope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(
             jdkHomePaths,
+            emptyList(),
             testServices.environmentManager.getProjectEnvironment()
         )
 
@@ -148,6 +150,7 @@
     override val libraryName: String get() = testModule.name
     override val librarySources: KaLibrarySourceModule? get() = null
     override val isSdk: Boolean get() = false
+    override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
 
     override val contentScope: GlobalSearchScope =
         GlobalSearchScope.filesScope(project, psiFiles.map { it.virtualFile })
@@ -174,6 +177,7 @@
 ) : KaLibraryModule {
     override val contentScope: GlobalSearchScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(
         roots,
+        emptyList(),
         testServices.environmentManager.getProjectEnvironment(),
     )
     override val libraryName: String get() = "Test Library $roots"
@@ -184,6 +188,7 @@
     override val targetPlatform: TargetPlatform get() = parentModule.targetPlatform
     override val binaryRoots: Collection<Path> get() = roots
     override val isSdk: Boolean get() = false
+    override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt
index 1fa92bb..1ec30ad 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt
@@ -38,6 +38,7 @@
                 testModule.targetPlatform,
                 StandaloneProjectFactory.createSearchScopeByLibraryRoots(
                     listOf(binaryRoot),
+                    emptyList(),
                     testServices.environmentManager.getProjectEnvironment(),
                 ),
                 project,
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt
index 8c4723e..7f3ef5e 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt
@@ -59,6 +59,7 @@
         testModule.targetPlatform,
         StandaloneProjectFactory.createSearchScopeByLibraryRoots(
             listOf(libraryJar),
+            emptyList(),
             testServices.environmentManager.getProjectEnvironment(),
         ),
         project,
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt
index d6866aa..f0d6c82 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt
@@ -219,6 +219,7 @@
     fun getScopeForLibraryByRoots(roots: Collection<Path>, testServices: TestServices): GlobalSearchScope {
         return StandaloneProjectFactory.createSearchScopeByLibraryRoots(
             roots,
+            emptyList(),
             testServices.environmentManager.getProjectEnvironment()
         )
     }