Always clean language and api versions after usage
This commit is contained in:
committed by
Nikolay Krasko
parent
c0dac9bf32
commit
af3b057ba2
+17
-2
@@ -247,7 +247,7 @@ fun <T> withCustomCompilerOptions(fileText: String, project: Project, module: Mo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun configureCompilerOptions(fileText: String, project: Project, module: Module): Boolean {
|
private fun configureCompilerOptions(fileText: String, project: Project, module: Module): Boolean {
|
||||||
val version = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// $LANGUAGE_VERSION_DIRECTIVE ")
|
val version = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// $LANGUAGE_VERSION_DIRECTIVE ")
|
||||||
val jvmTarget = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// $JVM_TARGET_DIRECTIVE ")
|
val jvmTarget = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// $JVM_TARGET_DIRECTIVE ")
|
||||||
// We can have several such directives in quickFixMultiFile tests
|
// We can have several such directives in quickFixMultiFile tests
|
||||||
@@ -310,7 +310,22 @@ private fun rollbackCompilerOptions(project: Project, module: Module) {
|
|||||||
KotlinCompilerSettings.getInstance(project).update { this.additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS }
|
KotlinCompilerSettings.getInstance(project).update { this.additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun configureLanguageAndApiVersion(
|
fun withCustomLanguageAndApiVersion(
|
||||||
|
project: Project,
|
||||||
|
module: Module,
|
||||||
|
languageVersion: String,
|
||||||
|
apiVersion: String?,
|
||||||
|
body: () -> Unit
|
||||||
|
) {
|
||||||
|
configureLanguageAndApiVersion(project, module, languageVersion, apiVersion)
|
||||||
|
try {
|
||||||
|
body()
|
||||||
|
} finally {
|
||||||
|
configureLanguageAndApiVersion(project, module, LanguageVersion.LATEST_STABLE.versionString, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun configureLanguageAndApiVersion(
|
||||||
project: Project,
|
project: Project,
|
||||||
module: Module,
|
module: Module,
|
||||||
languageVersion: String,
|
languageVersion: String,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.idea.codeInsight
|
package org.jetbrains.kotlin.idea.codeInsight
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||||
import org.jetbrains.kotlin.idea.test.configureLanguageAndApiVersion
|
import org.jetbrains.kotlin.idea.test.withCustomLanguageAndApiVersion
|
||||||
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
|
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
|
|
||||||
@@ -282,8 +282,9 @@ class OverrideImplementTest : AbstractOverrideImplementTest() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun testCopyExperimental() {
|
fun testCopyExperimental() {
|
||||||
configureLanguageAndApiVersion(project, module, "1.3", "1.3")
|
withCustomLanguageAndApiVersion(project, module, "1.3", "1.3") {
|
||||||
doOverrideFileTest("targetFun")
|
doOverrideFileTest("targetFun")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testUnresolvedType() {
|
fun testUnresolvedType() {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex
|
|||||||
import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex
|
import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex
|
||||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.*
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.*
|
||||||
import org.jetbrains.kotlin.idea.test.configureLanguageAndApiVersion
|
import org.jetbrains.kotlin.idea.test.withCustomLanguageAndApiVersion
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.allChildren
|
import org.jetbrains.kotlin.psi.psiUtil.allChildren
|
||||||
@@ -43,27 +43,29 @@ private const val RUN_PREFIX = "// RUN:"
|
|||||||
class RunConfigurationTest : AbstractRunConfigurationTest() {
|
class RunConfigurationTest : AbstractRunConfigurationTest() {
|
||||||
fun testMainInTest() {
|
fun testMainInTest() {
|
||||||
val createModuleResult = configureModule(moduleDirPath("module"), getTestProject().baseDir!!)
|
val createModuleResult = configureModule(moduleDirPath("module"), getTestProject().baseDir!!)
|
||||||
configureLanguageAndApiVersion(
|
withCustomLanguageAndApiVersion(
|
||||||
createModuleResult.module.project, createModuleResult.module, LanguageVersionSettingsImpl.DEFAULT.languageVersion.versionString,
|
createModuleResult.module.project, createModuleResult.module,
|
||||||
)
|
LanguageVersionSettingsImpl.DEFAULT.languageVersion.versionString, apiVersion = null
|
||||||
ConfigLibraryUtil.configureKotlinRuntimeAndSdk(createModuleResult.module, addJdk(testRootDisposable, ::mockJdk))
|
) {
|
||||||
|
ConfigLibraryUtil.configureKotlinRuntimeAndSdk(createModuleResult.module, addJdk(testRootDisposable, ::mockJdk))
|
||||||
|
|
||||||
val runConfiguration = createConfigurationFromMain(getTestProject(), "some.main")
|
val runConfiguration = createConfigurationFromMain(getTestProject(), "some.main")
|
||||||
val javaParameters = getJavaRunParameters(runConfiguration)
|
val javaParameters = getJavaRunParameters(runConfiguration)
|
||||||
|
|
||||||
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.srcOutputDir))
|
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.srcOutputDir))
|
||||||
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.testOutputDir))
|
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.testOutputDir))
|
||||||
|
|
||||||
createModuleResult.srcDir?.children?.filter { it.extension == "kt" }?.forEach {
|
createModuleResult.srcDir?.children?.filter { it.extension == "kt" }?.forEach {
|
||||||
val psiFile = PsiManager.getInstance(createModuleResult.module.project).findFile(it)
|
val psiFile = PsiManager.getInstance(createModuleResult.module.project).findFile(it)
|
||||||
if (psiFile is KtFile) {
|
if (psiFile is KtFile) {
|
||||||
psiFile.acceptChildren(
|
psiFile.acceptChildren(
|
||||||
object : KtVisitorVoid() {
|
object : KtVisitorVoid() {
|
||||||
override fun visitNamedFunction(function: KtNamedFunction) {
|
override fun visitNamedFunction(function: KtNamedFunction) {
|
||||||
functionVisitor(createModuleResult.module, function)
|
functionVisitor(createModuleResult.module, function)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user