diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt index 78b9a3c4ca4..e55cf17f5fc 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt @@ -14,11 +14,14 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEdito import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.JarFileSystem import com.intellij.openapi.vfs.LocalFileSystem +import com.intellij.testFramework.exceptionCases.AbstractExceptionCase import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase -import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments.Companion.DEFAULT +import org.jetbrains.kotlin.config.CompilerSettings.Companion.DEFAULT_ADDITIONAL_ARGUMENTS import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersion import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder +import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion @@ -42,8 +45,23 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( myFixture.configureByText("foo.kt", "inline class My(val n: Int)") assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport) - myFixture.launchAction(myFixture.findSingleIntention("Disable inline classes support in the project")) - assertEquals(LanguageFeature.State.DISABLED, inlineClassesSupport) + assertException(object : AbstractExceptionCase() { + override fun getExpectedExceptionClass(): Class = AssertionError::class.java + + override fun tryClosure() { + myFixture.findSingleIntention("Disable inline classes support in the project") + } + }) + } + + fun testEnableInlineClasses() { + configureRuntime("mockRuntime11") + resetProjectSettings(LanguageVersion.KOTLIN_1_3) + myFixture.configureByText("foo.kt", "inline class My(val n: Int)") + + assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport) + myFixture.launchAction(myFixture.findSingleIntention("Enable inline classes support in the project")) + assertEquals(LanguageFeature.State.ENABLED, inlineClassesSupport) } fun testEnableCoroutines() { @@ -51,7 +69,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( resetProjectSettings(LanguageVersion.KOTLIN_1_1) myFixture.configureByText("foo.kt", "suspend fun foo()") - assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) + assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport) myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project")) assertEquals(LanguageFeature.State.ENABLED, coroutineSupport) @@ -62,7 +80,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( resetProjectSettings(LanguageVersion.KOTLIN_1_1) myFixture.configureByText("foo.kt", "suspend fun foo()") - assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) + assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport) myFixture.launchAction(myFixture.findSingleIntention("Disable coroutine support in the project")) assertEquals(LanguageFeature.State.ENABLED_WITH_ERROR, coroutineSupport) @@ -159,12 +177,14 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( fun testAddKotlinReflect() { configureRuntime("mockRuntime11") - myFixture.configureByText("foo.kt", """class Foo(val prop: Any) { + myFixture.configureByText( + "foo.kt", """class Foo(val prop: Any) { fun func() {} } fun y01() = Foo::prop.getter - """) + """ + ) myFixture.launchAction(myFixture.findSingleIntention("Add kotlin-reflect.jar to the classpath")) val kotlinRuntime = KotlinJavaModuleConfigurator.instance.getKotlinLibrary(module)!! val classes = kotlinRuntime.getFiles(OrderRootType.CLASSES).map { it.name } @@ -190,10 +210,13 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( } private fun resetProjectSettings(version: LanguageVersion) { + KotlinCompilerSettings.getInstance(project).update { + additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS + } KotlinCommonCompilerArgumentsHolder.getInstance(project).update { languageVersion = version.versionString apiVersion = version.versionString - coroutinesState = CommonCompilerArguments.WARN + coroutinesState = DEFAULT } } @@ -204,6 +227,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( get() = project.getLanguageVersionSettings().getFeatureSupport(LanguageFeature.InlineClasses) override fun tearDown() { + resetProjectSettings(LanguageVersion.KOTLIN_1_3) FacetManager.getInstance(module).getFacetByType(KotlinFacetType.TYPE_ID)?.let { FacetUtil.deleteFacet(it) } diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.192 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.192 index f6a522bf125..45a454ed696 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.192 +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.192 @@ -7,17 +7,21 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.facet.FacetManager import com.intellij.facet.impl.FacetUtil +import com.intellij.openapi.module.Module import com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.JarFileSystem import com.intellij.openapi.vfs.LocalFileSystem +import com.intellij.testFramework.exceptionCases.AbstractExceptionCase import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase -import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments.Companion.DEFAULT +import org.jetbrains.kotlin.config.CompilerSettings.Companion.DEFAULT_ADDITIONAL_ARGUMENTS import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersion import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder +import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion @@ -38,8 +42,23 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( myFixture.configureByText("foo.kt", "inline class My(val n: Int)") assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport) - myFixture.launchAction(myFixture.findSingleIntention("Disable inline classes support in the project")) - assertEquals(LanguageFeature.State.DISABLED, inlineClassesSupport) + assertException(object : AbstractExceptionCase() { + override fun getExpectedExceptionClass(): Class = AssertionError::class.java + + override fun tryClosure() { + myFixture.findSingleIntention("Disable inline classes support in the project") + } + }) + } + + fun testEnableInlineClasses() { + configureRuntime("mockRuntime11") + resetProjectSettings(LanguageVersion.KOTLIN_1_3) + myFixture.configureByText("foo.kt", "inline class My(val n: Int)") + + assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport) + myFixture.launchAction(myFixture.findSingleIntention("Enable inline classes support in the project")) + assertEquals(LanguageFeature.State.ENABLED, inlineClassesSupport) } fun testEnableCoroutines() { @@ -47,7 +66,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( resetProjectSettings(LanguageVersion.KOTLIN_1_1) myFixture.configureByText("foo.kt", "suspend fun foo()") - assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) + assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport) myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project")) assertEquals(LanguageFeature.State.ENABLED, coroutineSupport) @@ -58,7 +77,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( resetProjectSettings(LanguageVersion.KOTLIN_1_1) myFixture.configureByText("foo.kt", "suspend fun foo()") - assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) + assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport) myFixture.launchAction(myFixture.findSingleIntention("Disable coroutine support in the project")) assertEquals(LanguageFeature.State.ENABLED_WITH_ERROR, coroutineSupport) @@ -155,12 +174,14 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( fun testAddKotlinReflect() { configureRuntime("mockRuntime11") - myFixture.configureByText("foo.kt", """class Foo(val prop: Any) { + myFixture.configureByText( + "foo.kt", """class Foo(val prop: Any) { fun func() {} } fun y01() = Foo::prop.getter - """) + """ + ) myFixture.launchAction(myFixture.findSingleIntention("Add kotlin-reflect.jar to the classpath")) val kotlinRuntime = KotlinJavaModuleConfigurator.instance.getKotlinLibrary(module)!! val classes = kotlinRuntime.getFiles(OrderRootType.CLASSES).map { it.name } @@ -186,10 +207,13 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( } private fun resetProjectSettings(version: LanguageVersion) { + KotlinCompilerSettings.getInstance(project).update { + additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS + } KotlinCommonCompilerArgumentsHolder.getInstance(project).update { languageVersion = version.versionString apiVersion = version.versionString - coroutinesState = CommonCompilerArguments.WARN + coroutinesState = DEFAULT } } @@ -200,6 +224,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase( get() = project.getLanguageVersionSettings().getFeatureSupport(LanguageFeature.InlineClasses) override fun tearDown() { + resetProjectSettings(LanguageVersion.KOTLIN_1_3) FacetManager.getInstance(module).getFacetByType(KotlinFacetType.TYPE_ID)?.let { FacetUtil.deleteFacet(it) }