diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt index a648b69dfb5..1fa66c736ce 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/compilerFacility/AbstractCompilerFacilityTest.kt @@ -69,9 +69,7 @@ abstract class AbstractCompilerFacilityTest : AbstractAnalysisApiBasedTest() { } override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) { - val mainModule = moduleStructure.modules.first { it.name == "main" } - val ktFiles = testServices.ktModuleProvider.getModuleFiles(mainModule).filterIsInstance() - val ktFile = ktFiles.singleOrNull() ?: ktFiles.first { it.name == "main.kt" } + val (mainModule, ktFile) = findTargetFile(moduleStructure, testServices) val irCollector = CollectingIrGenerationExtension() @@ -119,6 +117,28 @@ abstract class AbstractCompilerFacilityTest : AbstractAnalysisApiBasedTest() { } } + private fun findTargetFile(moduleStructure: TestModuleStructure, testServices: TestServices): Pair { + if (moduleStructure.modules.size == 1) { + val testModule = moduleStructure.modules.single() + val psiFiles = testServices.ktModuleProvider.getModuleFiles(testModule) + val ktFiles = psiFiles.filterIsInstance() + if (ktFiles.size == 1) { + // In simpler whole-file compilation tests, do not require the '' + return testModule to ktFiles.single() + } + } + + for (testModule in moduleStructure.modules) { + for (psiFile in testServices.ktModuleProvider.getModuleFiles(testModule)) { + if (psiFile is KtFile && testServices.expressionMarkerProvider.getCaretPositionOrNull(psiFile) != null) { + return testModule to psiFile + } + } + } + + error("Cannot find the main test file") + } + override fun configureTest(builder: TestConfigurationBuilder) { super.configureTest(builder) with(builder) { diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/multipleFiles.kt b/analysis/analysis-api/testData/components/compilerFacility/compilation/multipleFiles.kt index d3fd13039a0..4d260f4c74f 100644 --- a/analysis/analysis-api/testData/components/compilerFacility/compilation/multipleFiles.kt +++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/multipleFiles.kt @@ -13,6 +13,6 @@ import lib.Foo object Main { @JvmStatic fun main(args: Array) { - Foo().foo() + Foo().foo() } } \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/commonUsage.kt b/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/commonUsage.kt index 2ec964c2f74..d5fbac65f50 100644 --- a/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/commonUsage.kt +++ b/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/commonUsage.kt @@ -13,5 +13,5 @@ fun lib(): String = "foo" import lib.lib fun test() { - lib() + lib() } \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/defaultParameterValue.kt b/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/defaultParameterValue.kt index 7368ab4c9ca..8eb236cb65c 100644 --- a/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/defaultParameterValue.kt +++ b/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/defaultParameterValue.kt @@ -13,5 +13,5 @@ fun lib(a: Int = 5): String { import lib.lib fun test() { - lib() + lib() } \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/internalUsage.kt b/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/internalUsage.kt index c275fd02e2b..48744211906 100644 --- a/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/internalUsage.kt +++ b/analysis/analysis-api/testData/components/compilerFacility/compilationMultiModule/internalUsage.kt @@ -11,5 +11,5 @@ internal fun lib(): String = "foo" import lib.lib fun test() { - lib() + lib() } \ No newline at end of file