From d7bb8a7a213c4a3d98191f110fcf07fe5016fd54 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 23 May 2018 18:48:52 +0300 Subject: [PATCH] Do not suggest -Xuse...=kotlin.Experimental in experimental world --- .../kotlin/idea/quickfix/MakeModuleExperimentalFix.kt | 8 +++++++- idea/testData/quickfix/experimental/doNotSwitchOn.kt | 9 +++++++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 idea/testData/quickfix/experimental/doNotSwitchOn.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt index 176874ac9ed..2cdd669db1e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeModuleExperimentalFix.kt @@ -47,7 +47,13 @@ class MakeModuleExperimentalFix( val facet = KotlinFacet.get(module) ?: return true val facetSettings = facet.configuration.settings val compilerSettings = facetSettings.compilerSettings ?: return true - return compilerArgument !in compilerSettings.additionalArgumentsAsList + return if (annotationFqName != ExperimentalUsageChecker.EXPERIMENTAL_FQ_NAME) { + compilerArgument !in compilerSettings.additionalArgumentsAsList + } else { + compilerSettings.additionalArgumentsAsList.none { + it.startsWith("-Xuse-experimental=") || it.startsWith("-Xexperimental=") + } + } } companion object : KotlinSingleIntentionActionFactory() { diff --git a/idea/testData/quickfix/experimental/doNotSwitchOn.kt b/idea/testData/quickfix/experimental/doNotSwitchOn.kt new file mode 100644 index 00000000000..bb8ab2cf83e --- /dev/null +++ b/idea/testData/quickfix/experimental/doNotSwitchOn.kt @@ -0,0 +1,9 @@ +// "Add '-Xuse-experimental=kotlin.Experimental' to module light_idea_test_case compiler arguments" "false" +// COMPILER_ARGUMENTS: -version -Xuse-experimental=Something +// DISABLE-ERRORS +// WITH_RUNTIME +// ACTION: Make internal +// ACTION: Make private + +@Experimental +annotation class MyExperimentalAPI \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index cf78d87a7c2..3ab630f6c47 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -6062,6 +6062,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/experimental/classUseExperimental.kt"); } + @TestMetadata("doNotSwitchOn.kt") + public void testDoNotSwitchOn() throws Exception { + runTest("idea/testData/quickfix/experimental/doNotSwitchOn.kt"); + } + @TestMetadata("functionInLocalClass.kt") public void testFunctionInLocalClass() throws Exception { runTest("idea/testData/quickfix/experimental/functionInLocalClass.kt");