diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt index 3ba40ada813..c8f050c011a 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt @@ -21,7 +21,7 @@ import com.intellij.codeInsight.lookup.LookupElement import com.intellij.openapi.util.io.FileUtil import org.jetbrains.kotlin.idea.caches.project.LibraryModificationTracker import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase -import org.jetbrains.kotlin.idea.test.configureLanguageVersion +import org.jetbrains.kotlin.idea.test.configureCompilerOptions import org.jetbrains.kotlin.resolve.TargetPlatform import java.io.File @@ -39,7 +39,7 @@ abstract class KotlinFixtureCompletionBaseTestCase : KotlinLightCodeInsightFixtu try { val fileText = FileUtil.loadFile(File(testPath), true) - configureLanguageVersion(fileText, project, module) + configureCompilerOptions(fileText, project, module) assertTrue("\"\" is missing in file \"$testPath\"", fileText.contains("")); diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt index 06d2cc948d7..aa8cc6e8981 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCase.kt @@ -28,7 +28,9 @@ import com.intellij.psi.search.ProjectScope import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.LoggedErrorProcessor import org.apache.log4j.Logger -import org.jetbrains.kotlin.config.LanguageFeature +import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments +import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.actions.internal.KotlinInternalMode import org.jetbrains.kotlin.idea.facet.configureFacet @@ -180,14 +182,29 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix } } -fun configureLanguageVersion(fileText: String, project: Project, module: Module) { +fun configureCompilerOptions(fileText: String, project: Project, module: Module) { val version = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// LANGUAGE_VERSION: ") - if (version != null) { + val jvmTarget = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// JVM_TARGET: ") + val options = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// COMPILER_ARGUMENTS: ") + if (version != null || jvmTarget != null || options != null) { val accessToken = WriteAction.start() try { val modelsProvider = IdeModifiableModelsProviderImpl(project) val facet = module.getOrCreateFacet(modelsProvider, useProjectSettings = false) - facet.configureFacet(version, LanguageFeature.State.DISABLED, null, modelsProvider) + + facet.configureFacet( + version ?: LanguageVersion.LATEST_STABLE.versionString, + LanguageFeature.State.DISABLED, + if (jvmTarget != null) TargetPlatformKind.Jvm(JvmTarget.fromString(jvmTarget)!!) else null, + modelsProvider + ) + if (options != null) { + val compilerSettings = facet.configuration.settings.compilerSettings ?: CompilerSettings().also { + facet.configuration.settings.compilerSettings = it + } + compilerSettings.additionalArguments = options + facet.configuration.settings.updateMergedArguments() + } modelsProvider.commit() } finally { diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/AbstractLocalInspectionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/inspections/AbstractLocalInspectionTest.kt index a35c55706ac..75a1a71c342 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/AbstractLocalInspectionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/AbstractLocalInspectionTest.kt @@ -26,7 +26,7 @@ import junit.framework.ComparisonFailure import junit.framework.TestCase import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase -import org.jetbrains.kotlin.idea.test.configureLanguageVersion +import org.jetbrains.kotlin.idea.test.configureCompilerOptions import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.psiUtil.startOffset @@ -83,7 +83,7 @@ abstract class AbstractLocalInspectionTest : KotlinLightCodeInsightFixtureTestCa val fileText = FileUtil.loadFile(mainFile, true) TestCase.assertTrue("\"\" is missing in file \"$mainFile\"", fileText.contains("")) - configureLanguageVersion(fileText, project, module) + configureCompilerOptions(fileText, project, module) val minJavaVersion = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// MIN_JAVA_VERSION: ") if (minJavaVersion != null && !SystemInfo.isJavaVersionAtLeast(minJavaVersion)) return diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt index 01491b5e9fc..64794bf1893 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.quickfix.utils.findInspectionFile import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase +import org.jetbrains.kotlin.idea.test.configureCompilerOptions import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.testFramework.runWriteAction @@ -194,6 +195,7 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest private fun doTest(beforeFileName: String) { val mainFile = File(beforeFileName) val originalFileText = FileUtil.loadFile(mainFile, true) + configureCompilerOptions(originalFileText, project, module) val mainFileDir = mainFile.parentFile!! diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixTest.kt index d30052f20cf..a2ad98ed0e9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixTest.kt @@ -41,7 +41,7 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase() { @Throws(Exception::class) protected fun doTest(beforeFileName: String) { val beforeFileText = FileUtil.loadFile(File(beforeFileName)) - configureLanguageVersion(beforeFileText, project, module) + configureCompilerOptions(beforeFileText, project, module) val inspections = parceInspectionsToEnable(beforeFileName, beforeFileText).toTypedArray()