diff --git a/.idea/modules.xml b/.idea/modules.xml
index 3539b0a8f88..ecfd35f4f91 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -72,11 +72,11 @@
+
-
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ideaTestUtils.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ideaTestUtils.kt
index 94e4ff8f233..4d43cbbc46c 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ideaTestUtils.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ideaTestUtils.kt
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.idea.completion.test
import com.intellij.openapi.util.io.FileUtil
+import com.intellij.testFramework.UsefulTestCase
import com.intellij.testFramework.fixtures.CodeInsightTestFixture
import java.io.File
@@ -35,3 +36,5 @@ fun CodeInsightTestFixture.configureWithExtraFile(path: String, vararg extraName
configureByFiles(*(listOf(path) + extraPaths).toTypedArray())
}
+
+inline fun Any?.assertInstanceOf() = UsefulTestCase.assertInstanceOf(this, T::class.java)
\ No newline at end of file
diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.java b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.java
index 5ed2fcc71ad..57680054448 100644
--- a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.java
+++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.java
@@ -179,19 +179,22 @@ public class ConfigLibraryUtil {
);
}
+ public static void addLibrary(@NotNull Module module, @NotNull String libraryName, @NotNull String rootPath, @NotNull String[] jarPaths) {
+ NewLibraryEditor editor = new NewLibraryEditor();
+ editor.setName(libraryName);
+ for (String jarPath : jarPaths) {
+ editor.addRoot(VfsUtil.getUrlForLibraryRoot(new File(rootPath, jarPath)), OrderRootType.CLASSES);
+ }
+
+ addLibrary(editor, module);
+ }
+
public static void configureLibrariesByDirective(@NotNull Module module, String rootPath, String fileText) {
for (String libraryInfo : InTextDirectivesUtils.findListWithPrefixes(fileText, "// CONFIGURE_LIBRARY: ")) {
int i = libraryInfo.indexOf('@');
String libraryName = libraryInfo.substring(0, i);
String[] jarPaths = libraryInfo.substring(i + 1).split(";");
-
- NewLibraryEditor editor = new NewLibraryEditor();
- editor.setName(libraryName);
- for (String jarPath : jarPaths) {
- editor.addRoot(VfsUtil.getUrlForLibraryRoot(new File(rootPath, jarPath)), OrderRootType.CLASSES);
- }
-
- addLibrary(editor, module);
+ addLibrary(module, libraryName, rootPath, jarPaths);
}
}
diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/TestFixtureExtension.kt b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/TestFixtureExtension.kt
new file mode 100644
index 00000000000..935d45fe532
--- /dev/null
+++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/TestFixtureExtension.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2010-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.idea.test
+
+import com.intellij.openapi.module.Module
+import com.intellij.util.SmartFMap
+
+interface TestFixtureExtension {
+ fun setUp(module: Module)
+ fun tearDown()
+
+ companion object {
+ @Volatile
+ private var instances = SmartFMap.emptyMap()
+
+ @Suppress("UNCHECKED_CAST")
+ fun loadFixture(className: String, module: Module): TestFixtureExtension {
+ instances[className]?.let { return it }
+
+ return (Class.forName(className).newInstance() as TestFixtureExtension).apply {
+ this.setUp(module)
+ instances = instances.plus(className, this)
+ }
+ }
+
+ inline fun loadFixture(module: Module) = loadFixture(T::class.qualifiedName!!, module) as T
+
+ fun getFixture(className: String) = instances[className]
+
+ inline fun getFixture() = getFixture(T::class.qualifiedName!!) as? T
+
+ fun unloadFixture(className: String) {
+ instances[className]?.let {
+ it.tearDown()
+ instances = instances.minus(className)
+ }
+ }
+
+ inline fun unloadFixture() = unloadFixture(T::class.qualifiedName!!)
+ }
+}
\ No newline at end of file
diff --git a/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/SpringTestFixtureExtension.kt b/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/SpringTestFixtureExtension.kt
new file mode 100644
index 00000000000..80e0db4799f
--- /dev/null
+++ b/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/SpringTestFixtureExtension.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2010-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.idea.spring.tests
+
+import com.intellij.facet.impl.FacetUtil
+import com.intellij.openapi.module.Module
+import com.intellij.spring.facet.SpringFacet
+import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
+import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
+import org.jetbrains.kotlin.idea.test.TestFixtureExtension
+import java.util.*
+
+@Suppress("unused")
+class SpringTestFixtureExtension() : TestFixtureExtension {
+ private var module: Module? = null
+
+ enum class SpringFramework(val version: String, vararg val artifactIds: String) {
+ FRAMEWORK_4_2_0(
+ "4.2.0.RELEASE",
+ "core", "beans", "context"
+ )
+ }
+
+ val SPRING_LIBRARY_ROOT = "${PluginTestCaseBase.getTestDataPathBase()}/spring/_lib"
+
+ override fun setUp(module: Module) {
+ this.module = module
+ val library = SpringFramework.FRAMEWORK_4_2_0
+ val libraryPath = "$SPRING_LIBRARY_ROOT/spring/${library.version}/"
+ val jarNames = HashSet(library.artifactIds.size)
+ for (id in library.artifactIds) {
+ jarNames.add("spring-$id-${library.version}.jar")
+ }
+ ConfigLibraryUtil.addLibrary(module, "spring" + library.version, libraryPath, jarNames.toTypedArray())
+
+ FacetUtil.addFacet(module, SpringFacet.getSpringFacetType())
+ }
+
+ override fun tearDown() {
+ try {
+ // clear existing SpringFacet configuration before running next test
+ module?.let { SpringFacet.getInstance(it) }?.let {
+ it.removeFileSets()
+ FacetUtil.deleteFacet(it)
+ }
+ }
+ finally {
+ module = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/ultimate/.idea/codeStyleSettings.xml b/ultimate/.idea/codeStyleSettings.xml
new file mode 100644
index 00000000000..25816a9d883
--- /dev/null
+++ b/ultimate/.idea/codeStyleSettings.xml
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/compiler.xml b/ultimate/.idea/compiler.xml
new file mode 100644
index 00000000000..5a3d3f7bee2
--- /dev/null
+++ b/ultimate/.idea/compiler.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/copyright/profiles_settings.xml b/ultimate/.idea/copyright/profiles_settings.xml
new file mode 100644
index 00000000000..1c2e0fa5db1
--- /dev/null
+++ b/ultimate/.idea/copyright/profiles_settings.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/encodings.xml b/ultimate/.idea/encodings.xml
new file mode 100644
index 00000000000..97626ba4544
--- /dev/null
+++ b/ultimate/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/inspectionProfiles/Project_Default.xml b/ultimate/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000000..9dda5b6278e
--- /dev/null
+++ b/ultimate/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/inspectionProfiles/profiles_settings.xml b/ultimate/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 00000000000..3b312839bf2
--- /dev/null
+++ b/ultimate/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/misc.xml b/ultimate/.idea/misc.xml
new file mode 100644
index 00000000000..74b9a26b5a2
--- /dev/null
+++ b/ultimate/.idea/misc.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+ http://www.w3.org/1999/xhtml
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/scopes/scope_settings.xml b/ultimate/.idea/scopes/scope_settings.xml
new file mode 100644
index 00000000000..922003b8433
--- /dev/null
+++ b/ultimate/.idea/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/ultimate/.idea/uiDesigner.xml b/ultimate/.idea/uiDesigner.xml
new file mode 100644
index 00000000000..e96534fb27b
--- /dev/null
+++ b/ultimate/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/update_dependencies.xml b/update_dependencies.xml
index 9e325ad7d48..46389730de1 100644
--- a/update_dependencies.xml
+++ b/update_dependencies.xml
@@ -136,6 +136,21 @@
+
+
+
+
+
+
+
+
+
@@ -320,6 +335,12 @@
+
+
+
+
+
+