diff --git a/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.173 b/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.173 index 5a5b6908e16..398b4f71652 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.173 +++ b/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.173 @@ -31,19 +31,20 @@ import com.intellij.refactoring.RefactoringFactory import com.intellij.testFramework.MapDataContext import com.intellij.testFramework.PlatformTestCase import com.intellij.testFramework.PsiTestUtil +import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl import org.jetbrains.kotlin.idea.MainFunctionDetector -import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.search.allScope import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil import org.jetbrains.kotlin.idea.test.KotlinCodeInsightTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.* +import org.jetbrains.kotlin.idea.test.configureLanguageAndApiVersion import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.allChildren import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType -import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.junit.Assert import java.io.File import java.util.* @@ -56,6 +57,9 @@ class RunConfigurationTest: KotlinCodeInsightTestCase() { fun testMainInTest() { val createResult = configureModule(moduleDirPath("module"), getTestProject().baseDir!!) + configureLanguageAndApiVersion( + createResult.module.project, createResult.module, LanguageVersionSettingsImpl.DEFAULT.languageVersion.versionString + ) ConfigLibraryUtil.configureKotlinRuntimeAndSdk(createResult.module, addJdk(testRootDisposable, ::mockJdk)) val runConfiguration = createConfigurationFromMain("some.main") @@ -70,8 +74,8 @@ class RunConfigurationTest: KotlinCodeInsightTestCase() { val assertIsMain = "yes" in options val assertIsNotMain = "no" in options - val bindingContext = function.analyze(BodyResolveMode.FULL) - val isMainFunction = MainFunctionDetector(bindingContext).isMain(function) + val isMainFunction = + MainFunctionDetector(LanguageVersionSettingsImpl.DEFAULT) { it.resolveToDescriptorIfAny() }.isMain(function) if (assertIsMain) { Assert.assertTrue("The function ${function.fqName?.asString()} should be main", isMainFunction) @@ -92,8 +96,17 @@ class RunConfigurationTest: KotlinCodeInsightTestCase() { } catch (expected: Throwable) { } - Assert.assertNull("Kotlin configuration producer shouldN'T produce configuration for ${function.fqName?.asString()}", - KotlinRunConfigurationProducer.getEntryPointContainer(function)) + if (function.containingFile.text.startsWith("// entryPointExists")) { + Assert.assertNotNull( + "Kotlin configuration producer should produce configuration for ${function.fqName?.asString()}", + KotlinRunConfigurationProducer.getEntryPointContainer(function) + ) + } else { + Assert.assertNull( + "Kotlin configuration producer shouldn't produce configuration for ${function.fqName?.asString()}", + KotlinRunConfigurationProducer.getEntryPointContainer(function) + ) + } } } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.181 b/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.181 index 4d9498a72a7..09835a5e593 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.181 +++ b/idea/tests/org/jetbrains/kotlin/idea/run/RunConfigurationTest.kt.181 @@ -31,19 +31,20 @@ import com.intellij.refactoring.RefactoringFactory import com.intellij.testFramework.MapDataContext import com.intellij.testFramework.PlatformTestCase import com.intellij.testFramework.PsiTestUtil +import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl import org.jetbrains.kotlin.idea.MainFunctionDetector -import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.search.allScope import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil import org.jetbrains.kotlin.idea.test.KotlinCodeInsightTestCase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.* +import org.jetbrains.kotlin.idea.test.configureLanguageAndApiVersion import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.allChildren import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType -import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.junit.Assert import java.io.File import java.util.* @@ -56,6 +57,9 @@ class RunConfigurationTest: KotlinCodeInsightTestCase() { fun testMainInTest() { val createResult = configureModule(moduleDirPath("module"), getTestProject().baseDir!!) + configureLanguageAndApiVersion( + createResult.module.project, createResult.module, LanguageVersionSettingsImpl.DEFAULT.languageVersion.versionString + ) ConfigLibraryUtil.configureKotlinRuntimeAndSdk(createResult.module, addJdk(testRootDisposable, ::mockJdk)) val runConfiguration = createConfigurationFromMain("some.main") @@ -70,8 +74,8 @@ class RunConfigurationTest: KotlinCodeInsightTestCase() { val assertIsMain = "yes" in options val assertIsNotMain = "no" in options - val bindingContext = function.analyze(BodyResolveMode.FULL) - val isMainFunction = MainFunctionDetector(bindingContext).isMain(function) + val isMainFunction = + MainFunctionDetector(LanguageVersionSettingsImpl.DEFAULT) { it.resolveToDescriptorIfAny() }.isMain(function) if (assertIsMain) { Assert.assertTrue("The function ${function.fqName?.asString()} should be main", isMainFunction) @@ -92,8 +96,17 @@ class RunConfigurationTest: KotlinCodeInsightTestCase() { } catch (expected: Throwable) { } - Assert.assertNull("Kotlin configuration producer shouldN'T produce configuration for ${function.fqName?.asString()}", - KotlinRunConfigurationProducer.getEntryPointContainer(function)) + if (function.containingFile.text.startsWith("// entryPointExists")) { + Assert.assertNotNull( + "Kotlin configuration producer should produce configuration for ${function.fqName?.asString()}", + KotlinRunConfigurationProducer.getEntryPointContainer(function) + ) + } else { + Assert.assertNull( + "Kotlin configuration producer shouldn't produce configuration for ${function.fqName?.asString()}", + KotlinRunConfigurationProducer.getEntryPointContainer(function) + ) + } } } }