diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenLanguageFeatureQuickFixTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenUpdateConfigurationQuickFixTest.kt
similarity index 95%
rename from idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenLanguageFeatureQuickFixTest.kt
rename to idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenUpdateConfigurationQuickFixTest.kt
index 4999d2164fe..73b2f09ad5a 100644
--- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenLanguageFeatureQuickFixTest.kt
+++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenUpdateConfigurationQuickFixTest.kt
@@ -29,7 +29,7 @@ import org.junit.Test
import java.io.File
import kotlin.reflect.KMutableProperty0
-class MavenLanguageFeatureQuickFixTest : MavenImportingTestCase() {
+class MavenUpdateConfigurationQuickFixTest : MavenImportingTestCase() {
private lateinit var codeInsightTestFixture: CodeInsightTestFixture
fun getTestDataPath() = KotlinTestUtils.getHomeDirectory() + "/idea/idea-maven/testData/languageFeature/" + getTestName(true).substringBefore('_')
@@ -66,6 +66,10 @@ class MavenLanguageFeatureQuickFixTest : MavenImportingTestCase() {
doTest("Enable coroutine support in the current module")
}
+ @Test fun testAddKotlinReflect() {
+ doTest("Add kotlin-reflect.jar to the classpath")
+ }
+
private fun doTest(intentionName: String) {
val pomVFile = createProjectSubFile("pom.xml", File(getTestDataPath(), "pom.xml").readText())
val sourceVFile = createProjectSubFile("src/main/kotlin/src.kt", File(getTestDataPath(), "src.kt").readText())
diff --git a/idea/idea-maven/testData/languageFeature/addKotlinReflect/pom.xml b/idea/idea-maven/testData/languageFeature/addKotlinReflect/pom.xml
new file mode 100644
index 00000000000..9711e6ae81d
--- /dev/null
+++ b/idea/idea-maven/testData/languageFeature/addKotlinReflect/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+ maventest
+ maventest
+ 1.0-SNAPSHOT
+
+ $VERSION$
+
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib-jre8
+ ${kotlin.version}
+
+
+ org.jetbrains.kotlin
+ kotlin-test
+ ${kotlin.version}
+ test
+
+
+
+
+ ${project.basedir}/src/main/kotlin
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ ${kotlin.version}
+
+
+ compile
+ compile
+
+ wrong-goal
+ compile
+
+
+
+ test-compile
+ test-compile
+
+ test-compile
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/idea-maven/testData/languageFeature/addKotlinReflect/pom.xml.after b/idea/idea-maven/testData/languageFeature/addKotlinReflect/pom.xml.after
new file mode 100644
index 00000000000..0236b164547
--- /dev/null
+++ b/idea/idea-maven/testData/languageFeature/addKotlinReflect/pom.xml.after
@@ -0,0 +1,61 @@
+
+
+ 4.0.0
+
+ maventest
+ maventest
+ 1.0-SNAPSHOT
+
+ $VERSION$
+
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib-jre8
+ ${kotlin.version}
+
+
+ org.jetbrains.kotlin
+ kotlin-test
+ ${kotlin.version}
+ test
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+ RELEASE
+
+
+
+
+ ${project.basedir}/src/main/kotlin
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ ${kotlin.version}
+
+
+ compile
+ compile
+
+ wrong-goal
+ compile
+
+
+
+ test-compile
+ test-compile
+
+ test-compile
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/idea-maven/testData/languageFeature/addKotlinReflect/src.kt b/idea/idea-maven/testData/languageFeature/addKotlinReflect/src.kt
new file mode 100644
index 00000000000..b60ca708991
--- /dev/null
+++ b/idea/idea-maven/testData/languageFeature/addKotlinReflect/src.kt
@@ -0,0 +1,7 @@
+import kotlin.reflect.full.*
+
+class Foo(val prop: Any) {
+ fun func() {}
+}
+
+fun y01() = Foo::prop.getter
diff --git a/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle b/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle
new file mode 100644
index 00000000000..846876a724c
--- /dev/null
+++ b/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle
@@ -0,0 +1,18 @@
+group 'Again'
+version '1.0-SNAPSHOT'
+
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0")
+ }
+}
+
+apply plugin: 'kotlin'
+
+dependencies {
+ compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0"
+}
diff --git a/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle.after b/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle.after
new file mode 100644
index 00000000000..b702695295b
--- /dev/null
+++ b/idea/testData/gradle/languageFeature/addKotlinReflect/build.gradle.after
@@ -0,0 +1,19 @@
+group 'Again'
+version '1.0-SNAPSHOT'
+
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0")
+ }
+}
+
+apply plugin: 'kotlin'
+
+dependencies {
+ compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0"
+ compile "org.jetbrains.kotlin:kotlin-reflect:1.1.0"
+}
diff --git a/idea/testData/gradle/languageFeature/addKotlinReflect/src.kt b/idea/testData/gradle/languageFeature/addKotlinReflect/src.kt
new file mode 100644
index 00000000000..b60ca708991
--- /dev/null
+++ b/idea/testData/gradle/languageFeature/addKotlinReflect/src.kt
@@ -0,0 +1,7 @@
+import kotlin.reflect.full.*
+
+class Foo(val prop: Any) {
+ fun func() {}
+}
+
+fun y01() = Foo::prop.getter
diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleLanguageFeatureQuickFixTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleUpdateConfigurationQuickFixTest.kt
similarity index 95%
rename from idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleLanguageFeatureQuickFixTest.kt
rename to idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleUpdateConfigurationQuickFixTest.kt
index cb60bccf9bb..aa9dcf946d4 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleLanguageFeatureQuickFixTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleUpdateConfigurationQuickFixTest.kt
@@ -29,7 +29,7 @@ import org.junit.Test
import java.io.File
import kotlin.reflect.KMutableProperty0
-class GradleLanguageFeatureQuickFixTest : GradleImportingTestCase() {
+class GradleUpdateConfigurationQuickFixTest : GradleImportingTestCase() {
private lateinit var codeInsightTestFixture: CodeInsightTestFixture
fun getTestDataPath() = PluginTestCaseBase.getTestDataPathBase() + "/gradle/languageFeature/" + getTestName(true).substringBefore('_')
@@ -62,6 +62,10 @@ class GradleLanguageFeatureQuickFixTest : GradleImportingTestCase() {
doTest("Enable coroutine support in the current module")
}
+ @Test fun testAddKotlinReflect() {
+ doTest("Add kotlin-reflect.jar to the classpath")
+ }
+
private fun doTest(intentionName: String) {
val buildGradleVFile = createProjectSubFile("build.gradle", File(getTestDataPath(), "build.gradle").readText())
importProject()
diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/LanguageFeatureQuickFixTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt
similarity index 89%
rename from idea/tests/org/jetbrains/kotlin/idea/quickfix/LanguageFeatureQuickFixTest.kt
rename to idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt
index 80e73731468..4cfecb7c86a 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/LanguageFeatureQuickFixTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
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.configuration.KotlinJavaModuleConfigurator
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
@@ -38,7 +39,7 @@ import org.jetbrains.kotlin.idea.test.configureKotlinFacet
import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion
import java.io.File
-class LanguageFeatureQuickFixTest : LightPlatformCodeInsightFixtureTestCase() {
+class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase() {
fun testEnableCoroutines() {
configureRuntime("mockRuntime11")
resetProjectSettings(LanguageVersion.KOTLIN_1_1)
@@ -148,10 +149,26 @@ class LanguageFeatureQuickFixTest : LightPlatformCodeInsightFixtureTestCase() {
assertEquals(bundledRuntimeVersion(), getRuntimeLibraryVersion(myFixture.module))
}
+ fun testAddKotlinReflect() {
+ configureRuntime("mockRuntime11")
+ 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(myModule)!!
+ val classes = kotlinRuntime.getFiles(OrderRootType.CLASSES).map { it.name }
+ assertContainsElements(classes, "kotlin-reflect.jar")
+ val sources = kotlinRuntime.getFiles(OrderRootType.SOURCES)
+ assertContainsElements(sources.map { it.name }, "kotlin-reflect-sources.jar")
+ }
+
private fun configureRuntime(path: String) {
- val name = if (path == "mockRuntime106") "kotlin-runtime" else "kotlin-stdlib"
- val tempFile = FileUtil.createTempFile(name, ".jar")
- FileUtil.copy(File("idea/testData/configuration/$path/$name.jar"), tempFile)
+ val name = if (path == "mockRuntime106") "kotlin-runtime.jar" else "kotlin-stdlib.jar"
+ val tempFile = File(FileUtil.createTempDirectory("kotlin-update-configuration", null), name)
+ FileUtil.copy(File("idea/testData/configuration/$path/$name"), tempFile)
val tempVFile = LocalFileSystem.getInstance().findFileByIoFile(tempFile)!!
updateModel(myFixture.module) { model ->