diff --git a/.idea/modules.xml b/.idea/modules.xml
index 8f22a434b66..d56e6d3330e 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -23,6 +23,7 @@
+
diff --git a/build.xml b/build.xml
index b7661ecab62..0572a05604d 100644
--- a/build.xml
+++ b/build.xml
@@ -656,31 +656,57 @@
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/idea/analysis/analysis.iml b/idea/idea-analysis/idea-analysis.iml
similarity index 100%
rename from idea/analysis/analysis.iml
rename to idea/idea-analysis/idea-analysis.iml
diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/JetBundle.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/JetBundle.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/JetBundle.java
diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/idea-analysis/src/org/jetbrains/jet/plugin/JetBundle.properties
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/JetBundle.properties
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/JetBundle.properties
diff --git a/idea/src/org/jetbrains/jet/plugin/JetIconProvider.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/JetIconProvider.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/JetIconProvider.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/JetIconProvider.java
diff --git a/idea/src/org/jetbrains/jet/plugin/JetIcons.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/JetIcons.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/JetIcons.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/JetIcons.java
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/ProjectRootsUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/ProjectRootsUtil.java
new file mode 100644
index 00000000000..3cef674ca1d
--- /dev/null
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/ProjectRootsUtil.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin;
+
+import com.intellij.openapi.roots.ProjectFileIndex;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiFile;
+import org.jetbrains.annotations.NotNull;
+
+public class ProjectRootsUtil {
+ public static boolean isInSource(@NotNull PsiElement element) {
+ return isInSource(element, true);
+ }
+
+ public static boolean isInSource(@NotNull PsiElement element, boolean includeLibrarySources) {
+ PsiFile containingFile = element.getContainingFile();
+ if (containingFile == null) {
+ return false;
+ }
+ VirtualFile virtualFile = containingFile.getVirtualFile();
+ if (virtualFile == null) {
+ return false;
+ }
+ ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(element.getProject());
+ return includeLibrarySources ? index.isInSource(virtualFile) : index.isInSourceContent(virtualFile);
+ }
+}
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/actions/internal/KotlinInternalMode.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/actions/internal/KotlinInternalMode.kt
new file mode 100644
index 00000000000..dd0ec75e6d4
--- /dev/null
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/actions/internal/KotlinInternalMode.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.actions.internal
+
+import com.intellij.ide.util.PropertiesComponent
+
+public class KotlinInternalMode {
+ public class object {
+ val INTERNAL_MODE_PROPERTY = "kotlin.internal.mode.enabled"
+
+ public var enabled: Boolean
+ get() = PropertiesComponent.getInstance()!!.getBoolean(
+ INTERNAL_MODE_PROPERTY,
+ System.getProperty(INTERNAL_MODE_PROPERTY) == "true"
+ )
+ set(value) {
+ PropertiesComponent.getInstance()!!.setValue(INTERNAL_MODE_PROPERTY, value.toString())
+ }
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/JetFromJavaDescriptorHelper.java
diff --git a/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.java
diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/IDELightClassGenerationSupport.java
diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
index 3bef76967ff..03fdff9fc35 100644
--- a/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinCacheService.kt
@@ -142,4 +142,4 @@ class KotlinCacheService(val project: Project) {
public fun get(extension: CacheExtension): T {
return globalCachesPerPlatform[extension.platform]!![extension]
}
-}
\ No newline at end of file
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt
diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/chacheUtils.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/chacheUtils.kt
similarity index 86%
rename from idea/src/org/jetbrains/jet/plugin/caches/resolve/chacheUtils.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/chacheUtils.kt
index 44f9b77cc85..aa261678873 100644
--- a/idea/src/org/jetbrains/jet/plugin/caches/resolve/chacheUtils.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/chacheUtils.kt
@@ -17,11 +17,7 @@
package org.jetbrains.jet.plugin.caches.resolve
import com.intellij.openapi.project.Project
-import com.intellij.psi.util.PsiModificationTracker
-import java.util.concurrent.locks.Lock
-import java.util.concurrent.locks.ReentrantLock
import com.intellij.psi.util.CachedValuesManager
-import com.intellij.util.containers.SLRUCache
import com.intellij.psi.util.CachedValueProvider
class SynchronizedCachedValue(project: Project, provider: () -> CachedValueProvider.Result, trackValue: Boolean = true) {
diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/DescriptorToDeclarationUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/codeInsight/DescriptorToDeclarationUtil.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/codeInsight/DescriptorToDeclarationUtil.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/codeInsight/DescriptorToDeclarationUtil.java
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/configuration/JetModuleTypeManager.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/configuration/JetModuleTypeManager.java
new file mode 100644
index 00000000000..bcdf74e32dc
--- /dev/null
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/configuration/JetModuleTypeManager.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.configuration;
+
+import com.intellij.openapi.components.ServiceManager;
+import com.intellij.openapi.module.Module;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+public abstract class JetModuleTypeManager {
+ public static JetModuleTypeManager getInstance() {
+ return ServiceManager.getService(JetModuleTypeManager.class);
+ }
+
+ public abstract boolean isKtFileInGradleProjectInWrongFolder(@NotNull PsiElement element);
+ public abstract boolean isKtFileInGradleProjectInWrongFolder(@NotNull VirtualFile virtualFile, @NotNull Project project);
+ public abstract boolean isAndroidGradleModule(@NotNull Module module);
+ public boolean isGradleModule(@NotNull Module module) {
+ return ModuleTypeCacheManager.OBJECT$.geInstance(module.getProject()).isGradleModule(module);
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/ModuleTypeCache.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/configuration/ModuleTypeCache.kt
similarity index 96%
rename from idea/src/org/jetbrains/jet/plugin/configuration/ModuleTypeCache.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/configuration/ModuleTypeCache.kt
index 68c6c62af7c..40e3ab3a618 100644
--- a/idea/src/org/jetbrains/jet/plugin/configuration/ModuleTypeCache.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/configuration/ModuleTypeCache.kt
@@ -22,13 +22,13 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.util.CachedValueProvider
import com.intellij.psi.util.CachedValuesManager
-import com.intellij.openapi.util.DefaultModificationTracker
import com.intellij.openapi.vfs.impl.BulkVirtualFileListenerAdapter
import com.intellij.openapi.vfs.VirtualFileAdapter
import com.intellij.openapi.vfs.VirtualFileEvent
import com.intellij.openapi.vfs.VirtualFileMoveEvent
import com.intellij.openapi.vfs.VirtualFileCopyEvent
import com.intellij.openapi.vfs.VirtualFilePropertyEvent
+import com.intellij.openapi.util.SimpleModificationTracker
class ModuleTypeCacheManager private (project: Project) {
class object {
@@ -50,7 +50,7 @@ class ModuleTypeCacheManager private (project: Project) {
return cachedValue?.getValue(module)
}
- private class VfsModificationTracker(project: Project): DefaultModificationTracker() {
+ private class VfsModificationTracker(project: Project): SimpleModificationTracker() {
{
val connection = project.getMessageBus().connect();
connection.subscribe(VirtualFileManager.VFS_CHANGES, BulkVirtualFileListenerAdapter(
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JavaRuntimeDetectionUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JavaRuntimeDetectionUtil.java
new file mode 100644
index 00000000000..871930df691
--- /dev/null
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JavaRuntimeDetectionUtil.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.framework;
+
+import com.intellij.openapi.util.io.JarUtil;
+import com.intellij.openapi.vfs.VfsUtilCore;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.jet.utils.PathUtil;
+
+import java.util.List;
+import java.util.jar.Attributes;
+
+public class JavaRuntimeDetectionUtil {
+ public static String getJavaRuntimeVersion(@NotNull List classesRoots) {
+ VirtualFile stdJar = getRuntimeJar(classesRoots);
+ if (stdJar != null) {
+ return JarUtil.getJarAttribute(VfsUtilCore.virtualToIoFile(stdJar), Attributes.Name.IMPLEMENTATION_VERSION);
+ }
+
+ return null;
+ }
+
+ @Nullable
+ public static VirtualFile getRuntimeJar(@NotNull List classesRoots) {
+ return getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_JAR);
+ }
+
+ static VirtualFile getJarFile(@NotNull List classesRoots, @NotNull String jarName) {
+ for (VirtualFile root : classesRoots) {
+ if (root.getName().equals(jarName)) {
+ return root;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JsHeaderLibraryDetectionUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JsHeaderLibraryDetectionUtil.java
new file mode 100644
index 00000000000..de263f49cf0
--- /dev/null
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JsHeaderLibraryDetectionUtil.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.framework;
+
+import com.intellij.openapi.vfs.VfsUtilCore;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.util.CommonProcessors;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.plugin.JetFileType;
+
+import java.util.List;
+
+public class JsHeaderLibraryDetectionUtil {
+ public static boolean isJsHeaderLibraryDetected(@NotNull List classesRoots) {
+ if (JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) != null) {
+ // Prevent clashing with java runtime
+ return false;
+ }
+
+ for (VirtualFile file : classesRoots) {
+ CommonProcessors.FindFirstProcessor findKTProcessor = new CommonProcessors.FindFirstProcessor() {
+ @Override
+ protected boolean accept(VirtualFile file) {
+ String extension = file.getExtension();
+ return extension != null && extension.equals(JetFileType.INSTANCE.getDefaultExtension());
+ }
+ };
+
+ VfsUtilCore.processFilesRecursively(file, findKTProcessor);
+
+ if (findKTProcessor.isFound()) {
+ return true;
+ }
+ }
+
+ return false;
+
+ }
+}
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JsLibraryStdDetectionUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JsLibraryStdDetectionUtil.java
new file mode 100644
index 00000000000..cbe9a272d3a
--- /dev/null
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/framework/JsLibraryStdDetectionUtil.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.framework;
+
+import com.intellij.openapi.util.io.JarUtil;
+import com.intellij.openapi.vfs.VfsUtilCore;
+import com.intellij.openapi.vfs.VirtualFile;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.utils.PathUtil;
+
+import java.util.List;
+import java.util.jar.Attributes;
+
+public class JsLibraryStdDetectionUtil {
+ public static String getJsLibraryStdVersion(@NotNull List classesRoots) {
+ if (JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) != null) {
+ // Prevent clashing with java runtime, in case when library collects all roots.
+ return null;
+ }
+
+ for (VirtualFile root : classesRoots) {
+ if (root.getName().equals(PathUtil.JS_LIB_JAR_NAME)) {
+ assert JsHeaderLibraryDetectionUtil.isJsHeaderLibraryDetected(classesRoots) : "StdLib should also be detected as headers library";
+
+ return JarUtil.getJarAttribute(VfsUtilCore.virtualToIoFile(root), Attributes.Name.IMPLEMENTATION_VERSION);
+ }
+ }
+
+ return null;
+
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/AfterAnalysisHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/AfterAnalysisHighlightingVisitor.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/AfterAnalysisHighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/AfterAnalysisHighlightingVisitor.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java
similarity index 91%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java
index b5aff483548..80290efade1 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java
@@ -18,7 +18,6 @@ package org.jetbrains.jet.plugin.highlighter;
import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.lang.annotation.Annotator;
-import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
@@ -27,9 +26,10 @@ import org.jetbrains.jet.lang.psi.JetCodeFragment;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetReferenceExpression;
import org.jetbrains.jet.lang.resolve.BindingContext;
-import org.jetbrains.jet.plugin.JetPluginUtil;
-import org.jetbrains.jet.plugin.actions.internal.KotlinInternalModeToggleAction;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
+import org.jetbrains.jet.plugin.actions.internal.KotlinInternalMode;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
/**
* Quick showing possible problems with Kotlin internals in IDEA with tooltips
@@ -37,14 +37,14 @@ import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
public class DebugInfoAnnotator implements Annotator {
public static boolean isDebugInfoEnabled() {
- return KotlinInternalModeToggleAction.OBJECT$.getEnabled();
+ return KotlinInternalMode.OBJECT$.getEnabled();
}
@Override
public void annotate(@NotNull PsiElement element, @NotNull final AnnotationHolder holder) {
if (!isDebugInfoEnabled() ||
- !JetPluginUtil.isInSource(element) ||
- JetPluginUtil.isKtFileInGradleProjectInWrongFolder(element)) {
+ !ProjectRootsUtil.isInSource(element) ||
+ JetModuleTypeManager.getInstance().isKtFileInGradleProjectInWrongFolder(element)) {
return;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/DuplicateJvmSignatureAnnotator.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DuplicateJvmSignatureAnnotator.java
similarity index 94%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/DuplicateJvmSignatureAnnotator.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DuplicateJvmSignatureAnnotator.java
index 6c384849679..f16b54ef6b4 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/DuplicateJvmSignatureAnnotator.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/DuplicateJvmSignatureAnnotator.java
@@ -26,7 +26,7 @@ import org.jetbrains.jet.lang.psi.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.Diagnostics;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.project.TargetPlatform;
import org.jetbrains.jet.plugin.project.TargetPlatformDetector;
@@ -36,7 +36,7 @@ public class DuplicateJvmSignatureAnnotator implements Annotator {
@Override
public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
if (!(element instanceof JetFile) && !(element instanceof JetDeclaration)) return;
- if (!JetPluginUtil.isInSource(element, false)) return;
+ if (!ProjectRootsUtil.isInSource(element, false)) return;
PsiFile file = element.getContainingFile();
if (!(file instanceof JetFile) || TargetPlatformDetector.getPlatform((JetFile) file) != TargetPlatform.JVM) return;
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/HighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/HighlightingVisitor.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/HighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/HighlightingVisitor.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetHighlighter.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetHighlighter.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/JetHighlighter.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetHighlighter.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingColors.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingColors.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingColors.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingColors.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingLexer.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingLexer.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingLexer.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetHighlightingLexer.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java
similarity index 93%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java
index e80df7b7730..8b79a7b0683 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java
@@ -45,9 +45,10 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetReferenceExpression;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.Diagnostics;
-import org.jetbrains.jet.plugin.JetPluginUtil;
-import org.jetbrains.jet.plugin.actions.internal.KotlinInternalModeToggleAction;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
+import org.jetbrains.jet.plugin.actions.internal.KotlinInternalMode;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
import org.jetbrains.jet.plugin.quickfix.JetIntentionActionsFactory;
import org.jetbrains.jet.plugin.quickfix.QuickFixes;
@@ -93,8 +94,8 @@ public class JetPsiChecker implements Annotator, HighlightRangeExtension {
@Override
public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
- if (!(JetPluginUtil.isInSource(element) || element.getContainingFile() instanceof JetCodeFragment)
- || JetPluginUtil.isKtFileInGradleProjectInWrongFolder(element)) {
+ if (!(ProjectRootsUtil.isInSource(element) || element.getContainingFile() instanceof JetCodeFragment)
+ || JetModuleTypeManager.getInstance().isKtFileInGradleProjectInWrongFolder(element)) {
return;
}
@@ -106,8 +107,6 @@ public class JetPsiChecker implements Annotator, HighlightRangeExtension {
AnalyzeExhaust analyzeExhaust = ResolvePackage.getAnalysisResults(file);
if (analyzeExhaust.isError()) {
- HighlighterPackage.updateHighlightingResult(file, true);
-
throw new ProcessCanceledException(analyzeExhaust.getError());
}
@@ -118,15 +117,10 @@ public class JetPsiChecker implements Annotator, HighlightRangeExtension {
}
annotateElement(element, holder, bindingContext.getDiagnostics());
-
- if (element instanceof JetFile) {
- //noinspection StaticMethodReferencedViaSubclass
- HighlighterPackage.updateHighlightingResult(file, false);
- }
}
public static void annotateElement(PsiElement element, AnnotationHolder holder, Diagnostics diagnostics) {
- if (JetPluginUtil.isInSource(element, /* includeLibrarySources = */ false) || element.getContainingFile() instanceof JetCodeFragment) {
+ if (ProjectRootsUtil.isInSource(element, /* includeLibrarySources = */ false) || element.getContainingFile() instanceof JetCodeFragment) {
ElementAnnotator elementAnnotator = new ElementAnnotator(element, holder);
for (Diagnostic diagnostic : diagnostics.forElement(element)) {
elementAnnotator.registerDiagnosticAnnotations(diagnostic);
@@ -264,7 +258,7 @@ public class JetPsiChecker implements Annotator, HighlightRangeExtension {
@NotNull
private static String getMessage(@NotNull Diagnostic diagnostic) {
String message = IdeErrorMessages.RENDERER.render(diagnostic);
- if (KotlinInternalModeToggleAction.OBJECT$.getEnabled() || ApplicationManager.getApplication().isUnitTestMode()) {
+ if (KotlinInternalMode.OBJECT$.getEnabled() || ApplicationManager.getApplication().isUnitTestMode()) {
String factoryName = diagnostic.getFactory().getName();
if (message.startsWith("")) {
message = String.format("[%s] %s", factoryName, message.substring("".length()));
@@ -281,7 +275,7 @@ public class JetPsiChecker implements Annotator, HighlightRangeExtension {
@NotNull
private static String getDefaultMessage(@NotNull Diagnostic diagnostic) {
String message = DefaultErrorMessages.RENDERER.render(diagnostic);
- if (KotlinInternalModeToggleAction.OBJECT$.getEnabled() || ApplicationManager.getApplication().isUnitTestMode()) {
+ if (KotlinInternalMode.OBJECT$.getEnabled() || ApplicationManager.getApplication().isUnitTestMode()) {
return String.format("[%s] %s", diagnostic.getFactory().getName(), message);
}
return message;
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetSyntaxHighlighterFactory.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetSyntaxHighlighterFactory.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/JetSyntaxHighlighterFactory.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/JetSyntaxHighlighterFactory.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/KotlinProblemHighlightFilter.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/KotlinProblemHighlightFilter.kt
similarity index 96%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/KotlinProblemHighlightFilter.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/KotlinProblemHighlightFilter.kt
index fc630cd0c8d..eed0d9036c8 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/KotlinProblemHighlightFilter.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/KotlinProblemHighlightFilter.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2010-2013 JetBrains s.r.o.
+ * Copyright 2010-2014 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.
@@ -18,8 +18,8 @@ package org.jetbrains.jet.plugin.highlighter
import com.intellij.codeInsight.daemon.ProblemHighlightFilter
import com.intellij.psi.PsiFile
-import com.intellij.ide.projectView.impl.ProjectRootsUtil
import org.jetbrains.jet.plugin.JetFileType
+import com.intellij.ide.projectView.impl.ProjectRootsUtil
class KotlinProblemHighlightFilter : ProblemHighlightFilter() {
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/LabelsHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/LabelsHighlightingVisitor.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/LabelsHighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/LabelsHighlightingVisitor.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java
similarity index 95%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java
index 218a2099b0f..6e31054abd6 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java
@@ -19,7 +19,9 @@ package org.jetbrains.jet.plugin.highlighter;
import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jet.lang.descriptors.*;
+import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
+import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
+import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
import org.jetbrains.jet.lang.psi.JetParameter;
import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/SoftKeywordsHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/SoftKeywordsHighlightingVisitor.java
similarity index 96%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/SoftKeywordsHighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/SoftKeywordsHighlightingVisitor.java
index 5823418f042..a23ef0ffacc 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/SoftKeywordsHighlightingVisitor.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/SoftKeywordsHighlightingVisitor.java
@@ -24,7 +24,8 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.impl.source.tree.LeafPsiElement;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.jet.lang.psi.JetFunctionLiteral;
+import org.jetbrains.jet.lang.psi.JetFunctionLiteralExpression;
import org.jetbrains.jet.lexer.JetTokens;
class SoftKeywordsHighlightingVisitor extends HighlightingVisitor {
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/TypeKindHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/TypeKindHighlightingVisitor.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/TypeKindHighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/TypeKindHighlightingVisitor.java
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java
similarity index 96%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java
index b431bd6e792..d9f16e69c8d 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java
@@ -19,7 +19,9 @@ package org.jetbrains.jet.plugin.highlighter;
import com.intellij.lang.annotation.AnnotationHolder;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jet.lang.descriptors.*;
+import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
+import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
+import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.LocalVariableDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt
diff --git a/idea/src/org/jetbrains/jet/plugin/inspections/AbstractKotlinInspection.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/inspections/AbstractKotlinInspection.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/inspections/AbstractKotlinInspection.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/inspections/AbstractKotlinInspection.kt
index 707647f0aa6..903290df6b4 100644
--- a/idea/src/org/jetbrains/jet/plugin/inspections/AbstractKotlinInspection.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/inspections/AbstractKotlinInspection.kt
@@ -19,9 +19,9 @@ package org.jetbrains.jet.plugin.inspections
import com.intellij.codeInspection.LocalInspectionTool
import com.intellij.codeInspection.CustomSuppressableInspectionTool
import com.intellij.psi.PsiElement
+import com.intellij.codeInsight.daemon.HighlightDisplayKey
import com.intellij.codeInspection.SuppressIntentionAction
import com.intellij.codeInspection.SuppressManager
-import com.intellij.codeInsight.daemon.HighlightDisplayKey
public abstract class AbstractKotlinInspection: LocalInspectionTool(), CustomSuppressableInspectionTool {
public override fun getSuppressActions(element: PsiElement?): Array? {
diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/JetSelfTargetingIntention.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/intentions/JetSelfTargetingIntention.kt
similarity index 81%
rename from idea/src/org/jetbrains/jet/plugin/intentions/JetSelfTargetingIntention.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/intentions/JetSelfTargetingIntention.kt
index f642a2ec22c..df17baff3d4 100644
--- a/idea/src/org/jetbrains/jet/plugin/intentions/JetSelfTargetingIntention.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/intentions/JetSelfTargetingIntention.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2010-2013 JetBrains s.r.o.
+ * Copyright 2010-2014 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.
@@ -16,18 +16,20 @@
package org.jetbrains.jet.plugin.intentions
-import com.intellij.codeInsight.intention.impl.BaseIntentionAction
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiFile
import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.plugin.JetBundle
import org.jetbrains.jet.lang.psi.psiUtil.getParentByTypesAndPredicate
+import com.intellij.codeInsight.intention.IntentionAction
-public abstract class JetSelfTargetingIntention(val key: String, val elementType: Class) : BaseIntentionAction() {
- {
- setText(JetBundle.message(key))
+public abstract class JetSelfTargetingIntention(val key: String, val elementType: Class) : IntentionAction {
+ private var myText:String = JetBundle.message(key);
+ protected fun setText(text: String) {
+ myText = text
}
+ override fun getText(): String = myText
abstract fun isApplicableTo(element: T): Boolean
open fun isApplicableTo(element: T, editor: Editor): Boolean = isApplicableTo(element)
@@ -52,4 +54,8 @@ public abstract class JetSelfTargetingIntention(val key: String,
applyTo(target!!, editor)
}
-}
+
+ override fun startInWriteAction(): Boolean = true
+
+ override fun toString(): String = getText()
+}
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/OperatorToFunctionIntention.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/intentions/OperatorToFunctionIntention.kt
similarity index 94%
rename from idea/src/org/jetbrains/jet/plugin/intentions/OperatorToFunctionIntention.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/intentions/OperatorToFunctionIntention.kt
index ccffcb2befb..2ab9d4375a5 100644
--- a/idea/src/org/jetbrains/jet/plugin/intentions/OperatorToFunctionIntention.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/intentions/OperatorToFunctionIntention.kt
@@ -1,18 +1,18 @@
/*
-* Copyright 2010-2014 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.
-*/
+ * Copyright 2010-2014 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.jet.plugin.intentions
@@ -31,7 +31,6 @@ import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache
import org.jetbrains.jet.lang.resolve.BindingContext
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor
import org.jetbrains.jet.lang.resolve.calls.callUtil.getResolvedCall
-import org.jetbrains.jet.lang.psi.JetQualifiedExpression
public class OperatorToFunctionIntention : JetSelfTargetingIntention("operator.to.function", javaClass()) {
class object {
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt
index a4477608f52..f6aaf6128d5 100644
--- a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt
@@ -29,7 +29,6 @@ import java.util.*
import org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumEntry
import org.jetbrains.jet.lang.resolve.DescriptorUtils.isSyntheticClassObject
import org.jetbrains.jet.lang.types.error.MissingDependencyErrorClass
-import org.jetbrains.jet.lang.resolve.DescriptorResolver
import org.jetbrains.jet.lang.resolve.name.isComponentFunctionName
public fun buildDecompiledText(
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledUtils.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledUtils.kt
similarity index 89%
rename from idea/src/org/jetbrains/jet/plugin/libraries/DecompiledUtils.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledUtils.kt
index 64d92ef70fe..448b076f38c 100644
--- a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledUtils.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledUtils.kt
@@ -16,17 +16,14 @@
package org.jetbrains.jet.plugin.libraries
-import com.intellij.openapi.fileTypes.StdFileTypes
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.jet.lang.resolve.kotlin.KotlinBinaryClassCache
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader
import com.intellij.psi.ClassFileViewProvider
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames.KotlinSyntheticClass
+import com.intellij.ide.highlighter.JavaClassFileType
public fun isKotlinCompiledFile(file: VirtualFile): Boolean {
- if (file.getExtension() != StdFileTypes.CLASS.getDefaultExtension()) {
- return false
- }
if (isKotlinCompiledFileWithIncompatibleAbiVersion(file)) {
return false
}
@@ -35,7 +32,7 @@ public fun isKotlinCompiledFile(file: VirtualFile): Boolean {
}
public fun isKotlinCompiledFileWithIncompatibleAbiVersion(file: VirtualFile): Boolean {
- if (file.getExtension() != StdFileTypes.CLASS.getDefaultExtension()) {
+ if (file.getExtension() != JavaClassFileType.INSTANCE!!.getDefaultExtension()) {
return false
}
val header = KotlinBinaryClassCache.getKotlinBinaryClass(file)?.getClassHeader()
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/DeserializerForDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DeserializerForDecompiler.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/DeserializerForDecompiler.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DeserializerForDecompiler.kt
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetClassFileDecompiler.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClassFileDecompiler.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/JetClassFileDecompiler.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClassFileDecompiler.java
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetClassFileViewProvider.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClassFileViewProvider.kt
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/libraries/JetClassFileViewProvider.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClassFileViewProvider.kt
index 4b3408aac37..6853d0a10cd 100644
--- a/idea/src/org/jetbrains/jet/plugin/libraries/JetClassFileViewProvider.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClassFileViewProvider.kt
@@ -49,4 +49,4 @@ public class JetClassFileViewProvider(
override fun createCopy(copy: VirtualFile): SingleRootFileViewProvider {
return JetClassFileViewProvider(getManager(), copy, false, isInternal)
}
-}
\ No newline at end of file
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetClsFile.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClsFile.kt
similarity index 94%
rename from idea/src/org/jetbrains/jet/plugin/libraries/JetClsFile.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClsFile.kt
index 317bb78c71c..0df568e0c19 100644
--- a/idea/src/org/jetbrains/jet/plugin/libraries/JetClsFile.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClsFile.kt
@@ -19,13 +19,10 @@ package org.jetbrains.jet.plugin.libraries
import com.intellij.openapi.util.TextRange
import com.intellij.psi.impl.compiled.ClsFileImpl
import com.intellij.psi.util.PsiTreeUtil
-import org.jetbrains.annotations.Nullable
import org.jetbrains.annotations.TestOnly
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import org.jetbrains.jet.lang.psi.JetDeclaration
-import org.jetbrains.jet.lang.psi.JetFile
import kotlin.properties.Delegates
-import com.intellij.psi.PsiFile
public class JetClsFile(val provider: JetClassFileViewProvider) : ClsFileImpl(provider) {
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetClsStubBuilder.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClsStubBuilder.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/JetClsStubBuilder.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetClsStubBuilder.java
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetDecompilerForWrongAbiVersion.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetDecompilerForWrongAbiVersion.kt
similarity index 94%
rename from idea/src/org/jetbrains/jet/plugin/libraries/JetDecompilerForWrongAbiVersion.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetDecompilerForWrongAbiVersion.kt
index d66366784b4..0b242824979 100644
--- a/idea/src/org/jetbrains/jet/plugin/libraries/JetDecompilerForWrongAbiVersion.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetDecompilerForWrongAbiVersion.kt
@@ -26,4 +26,4 @@ public class JetDecompilerForWrongAbiVersion : ClassFileDecompilers.Light() {
override fun getText(file: VirtualFile) = "$INCOMPATIBLE_ABI_VERSION_COMMENT\n${ClsFileImpl.decompile(file)}"
}
-val INCOMPATIBLE_ABI_VERSION_COMMENT = " // This Kotlin file has an incompatible ABI version and is displayed as Java class"
\ No newline at end of file
+val INCOMPATIBLE_ABI_VERSION_COMMENT = " // This Kotlin file has an incompatible ABI version and is displayed as Java class"
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetDummyClassFileViewProvider.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetDummyClassFileViewProvider.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/JetDummyClassFileViewProvider.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetDummyClassFileViewProvider.java
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/ResolverForDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/ResolverForDecompiler.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/ResolverForDecompiler.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/ResolverForDecompiler.kt
index e9d6f9c22b2..997d605f43d 100644
--- a/idea/src/org/jetbrains/jet/plugin/libraries/ResolverForDecompiler.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/ResolverForDecompiler.kt
@@ -16,9 +16,9 @@
package org.jetbrains.jet.plugin.libraries
-import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import org.jetbrains.jet.lang.resolve.name.FqName
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
+import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
trait ResolverForDecompiler {
fun resolveTopLevelClass(classFqName: FqName): ClassDescriptor?
diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/missingDependencies.kt
diff --git a/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeProvider.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeProvider.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeProvider.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeProvider.java
diff --git a/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java
diff --git a/idea/src/org/jetbrains/jet/plugin/project/IDEAConfig.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/IDEAConfig.java
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/project/IDEAConfig.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/IDEAConfig.java
index ccd82d2f56d..5029b77b0dd 100644
--- a/idea/src/org/jetbrains/jet/plugin/project/IDEAConfig.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/IDEAConfig.java
@@ -25,4 +25,4 @@ public final class IDEAConfig extends LibrarySourcesConfig {
public IDEAConfig(@NotNull Project project) {
super(project, "default", ProjectStructureUtil.getLibLocationForProject(project), EcmaVersion.defaultVersion(), false);
}
-}
\ No newline at end of file
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java
diff --git a/idea/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java
similarity index 85%
rename from idea/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java
index 46a288c7209..f836fd2d92b 100644
--- a/idea/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ProjectStructureUtil.java
@@ -31,6 +31,7 @@ import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.search.FileTypeIndex;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.CachedValue;
import com.intellij.psi.util.CachedValueProvider;
@@ -40,16 +41,12 @@ import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.JetFile;
-import org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils;
-import org.jetbrains.jet.plugin.framework.JSLibraryStdPresentationProvider;
-import org.jetbrains.jet.plugin.framework.JsHeaderLibraryPresentationProvider;
-import org.jetbrains.jet.plugin.framework.LibraryPresentationProviderUtil;
-import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryUtil;
+import org.jetbrains.jet.plugin.JetFileType;
+import org.jetbrains.jet.plugin.framework.JsHeaderLibraryDetectionUtil;
+import org.jetbrains.jet.plugin.framework.JsLibraryStdDetectionUtil;
+import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryCoreUtil;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
public class ProjectStructureUtil {
private static final Key> IS_KOTLIN_JS_MODULE = Key.create("IS_KOTLIN_JS_MODULE");
@@ -66,8 +63,8 @@ public class ProjectStructureUtil {
public static boolean isJavaKotlinModule(@NotNull Module module) {
GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(
- ConfigureKotlinInProjectUtils.hasKotlinFilesOnlyInTests(module));
- return KotlinRuntimeLibraryUtil.getKotlinRuntimeMarkerClass(scope) != null;
+ hasKotlinFilesOnlyInTests(module));
+ return KotlinRuntimeLibraryCoreUtil.getKotlinRuntimeMarkerClass(scope) != null;
}
public static boolean isJsKotlinModule(@NotNull final Module module) {
@@ -162,7 +159,10 @@ public class ProjectStructureUtil {
ModuleRootManager.getInstance(module).orderEntries().librariesOnly().forEachLibrary(new Processor() {
@Override
public boolean process(Library library) {
- if (LibraryPresentationProviderUtil.isDetected(JsHeaderLibraryPresentationProvider.getInstance(), library)) {
+ boolean detected = JsHeaderLibraryDetectionUtil.isJsHeaderLibraryDetected(Arrays.asList(
+ library.getFiles(OrderRootType.CLASSES)));
+
+ if (detected) {
for (VirtualFile file : library.getRootProvider().getFiles(OrderRootType.SOURCES)) {
String path = PathUtil.getLocalPath(PathUtil.getLocalFile(file));
if (path != null) {
@@ -193,7 +193,11 @@ public class ProjectStructureUtil {
ModuleRootManager.getInstance(module).orderEntries().librariesOnly().forEachLibrary(new Processor() {
@Override
public boolean process(Library library) {
- if (LibraryPresentationProviderUtil.isDetected(JSLibraryStdPresentationProvider.getInstance(), library)) {
+ List classes = Arrays.asList(library.getFiles(OrderRootType.CLASSES));
+
+ boolean detected = JsLibraryStdDetectionUtil.getJsLibraryStdVersion(classes) != null;
+
+ if (detected) {
jsLibrary.set(library);
return false;
}
@@ -206,4 +210,12 @@ public class ProjectStructureUtil {
}
});
}
+
+ public static boolean hasKotlinFilesInSources(@NotNull Module module) {
+ return FileTypeIndex.containsFileOfType(JetFileType.INSTANCE, module.getModuleScope(false));
+ }
+
+ public static boolean hasKotlinFilesOnlyInTests(@NotNull Module module) {
+ return !hasKotlinFilesInSources(module) && FileTypeIndex.containsFileOfType(JetFileType.INSTANCE, module.getModuleScope(true));
+ }
}
diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java
index dd971daecae..757ee954bc3 100644
--- a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java
@@ -549,4 +549,4 @@ public class ResolveElementCache {
return true;
}
}
-}
\ No newline at end of file
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveSessionForBodies.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ResolveSessionForBodies.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/project/ResolveSessionForBodies.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/ResolveSessionForBodies.java
diff --git a/idea/src/org/jetbrains/jet/plugin/project/TargetPlatform.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/TargetPlatform.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/project/TargetPlatform.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/TargetPlatform.java
diff --git a/idea/src/org/jetbrains/jet/plugin/project/TargetPlatformDetector.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/TargetPlatformDetector.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/project/TargetPlatformDetector.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/TargetPlatformDetector.java
diff --git a/idea/src/org/jetbrains/jet/plugin/project/TargetPlatformImpl.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/project/TargetPlatformImpl.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/project/TargetPlatformImpl.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/project/TargetPlatformImpl.java
diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.java
diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt
index 42795e88fa1..44fa4adbbd2 100644
--- a/idea/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt
@@ -159,4 +159,4 @@ private class CaretBox(
if (editor == null) return
editor.getCaretModel().moveToOffset(copy.getTextOffset() + offsetInExpression)
}
-}
\ No newline at end of file
+}
diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java
new file mode 100644
index 00000000000..1fc4c69f621
--- /dev/null
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.quickfix;
+
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
+import com.intellij.codeInsight.intention.IntentionAction;
+import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory;
+
+import java.util.Collection;
+
+public class QuickFixes {
+
+ static final Multimap, JetIntentionActionsFactory> factories = HashMultimap.create();
+ static final Multimap, IntentionAction> actions = HashMultimap.create();
+
+ public static Collection getActionsFactories(DiagnosticFactory> diagnosticFactory) {
+ return factories.get(diagnosticFactory);
+ }
+
+ public static Collection getActions(DiagnosticFactory> diagnosticFactory) {
+ return actions.get(diagnosticFactory);
+ }
+
+ private QuickFixes() {}
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java
similarity index 96%
rename from idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java
index 93558bee030..8c4a8ba017e 100644
--- a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java
@@ -22,14 +22,15 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.AbstractProjectComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupManager;
-import com.intellij.openapi.vfs.VfsUtil;
+import com.intellij.openapi.vfs.VfsUtilCore;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.openapi.vfs.newvfs.NewVirtualFile;
+import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.util.Function;
+import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -153,16 +154,14 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
@NotNull
private Set getBuiltInSourceFiles(@NotNull URL url) {
- VirtualFile vf = VfsUtil.findFileByURL(url);
+ String fromUrl = VfsUtilCore.convertFromUrl(url);
+ VirtualFile vf = VirtualFileManager.getInstance().findFileByUrl(fromUrl);
assert vf != null : "Virtual file not found by URL: " + url;
// Refreshing VFS: in case the plugin jar was updated, the caches may hold the old value
- if (vf instanceof NewVirtualFile) {
- NewVirtualFile newVirtualFile = (NewVirtualFile) vf;
- newVirtualFile.markDirtyRecursively(); // This doesn't happen in a JARFS entry, unless we do it manually here
- }
vf.getChildren();
vf.refresh(false, true);
+ PathUtil.getLocalFile(vf).refresh(false, true);
PsiDirectory psiDirectory = PsiManager.getInstance(myProject).findDirectory(vf);
assert psiDirectory != null : "No PsiDirectory for " + vf;
diff --git a/idea/src/org/jetbrains/jet/plugin/references/JetReference.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/references/JetReference.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/references/JetReference.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/references/JetReference.kt
diff --git a/idea/src/org/jetbrains/jet/plugin/references/referenceUtil.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/references/referenceUtil.kt
similarity index 90%
rename from idea/src/org/jetbrains/jet/plugin/references/referenceUtil.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/references/referenceUtil.kt
index e32d659f97b..77d6a8b2442 100644
--- a/idea/src/org/jetbrains/jet/plugin/references/referenceUtil.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/references/referenceUtil.kt
@@ -19,18 +19,13 @@ package org.jetbrains.jet.plugin.references
import com.intellij.psi.PsiReference
import com.intellij.psi.PsiElement
import org.jetbrains.jet.asJava.unwrapped
-import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache
-import org.jetbrains.jet.lang.resolve.BindingContext
-import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor
import com.intellij.psi.PsiMethod
import org.jetbrains.jet.lang.psi.JetPropertyAccessor
import org.jetbrains.jet.lang.psi.psiUtil.getParentByType
import org.jetbrains.jet.lang.psi.JetProperty
import java.util.HashSet
import com.intellij.util.containers.ContainerUtil
-import org.jetbrains.jet.lang.psi.JetNamedDeclaration
import org.jetbrains.jet.lang.psi.JetExpression
-import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.plugin.intentions.OperatorToFunctionIntention
import org.jetbrains.jet.lang.psi.JetQualifiedExpression
import org.jetbrains.jet.lang.psi.JetCallExpression
diff --git a/idea/src/org/jetbrains/jet/plugin/search/searchUtil.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/search/searchUtil.kt
similarity index 98%
rename from idea/src/org/jetbrains/jet/plugin/search/searchUtil.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/search/searchUtil.kt
index 8de19e0a826..89023d9cf0e 100644
--- a/idea/src/org/jetbrains/jet/plugin/search/searchUtil.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/search/searchUtil.kt
@@ -30,4 +30,4 @@ fun Project.allScope(): GlobalSearchScope = GlobalSearchScope.allScope(this)
fun Project.projectScope(): GlobalSearchScope = GlobalSearchScope.projectScope(this)
-fun PsiFile.fileScope(): GlobalSearchScope = GlobalSearchScope.fileScope(this)
\ No newline at end of file
+fun PsiFile.fileScope(): GlobalSearchScope = GlobalSearchScope.fileScope(this)
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetAllPackagesIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetAllPackagesIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetAllPackagesIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetAllPackagesIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetAnnotationsIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetAnnotationsIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetAnnotationsIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetAnnotationsIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetClassByPackageIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetClassByPackageIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetClassByPackageIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetClassByPackageIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetClassShortNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetClassShortNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetClassShortNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetClassShortNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetFullClassNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetFullClassNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetFullClassNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetFullClassNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetFunctionShortNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetFunctionShortNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetFunctionShortNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetFunctionShortNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetPropertyShortNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetPropertyShortNameIndex.java
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetPropertyShortNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetPropertyShortNameIndex.java
index 8473f508055..9f11d51f3db 100644
--- a/idea/src/org/jetbrains/jet/plugin/stubindex/JetPropertyShortNameIndex.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetPropertyShortNameIndex.java
@@ -46,4 +46,4 @@ public class JetPropertyShortNameIndex extends StringStubIndexExtension get(String s, Project project, @NotNull GlobalSearchScope scope) {
return super.get(s, project, JetSourceFilterScope.kotlinSourcesAndLibraries(scope, project));
}
-}
\ No newline at end of file
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetSourceFilterScope.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetSourceFilterScope.java
similarity index 88%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetSourceFilterScope.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetSourceFilterScope.java
index aeb5f9f78a8..41e3ce647b9 100644
--- a/idea/src/org/jetbrains/jet/plugin/stubindex/JetSourceFilterScope.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetSourceFilterScope.java
@@ -16,7 +16,7 @@
package org.jetbrains.jet.plugin.stubindex;
-import com.intellij.openapi.fileTypes.StdFileTypes;
+import com.intellij.ide.highlighter.JavaClassFileType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
@@ -25,7 +25,7 @@ import com.intellij.psi.search.DelegatingGlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.JetFileType;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
public class JetSourceFilterScope extends DelegatingGlobalSearchScope {
@NotNull
@@ -55,11 +55,11 @@ public class JetSourceFilterScope extends DelegatingGlobalSearchScope {
return false;
}
- if (includeLibraries && StdFileTypes.CLASS == file.getFileType()) {
+ if (includeLibraries && JavaClassFileType.INSTANCE == file.getFileType()) {
return index.isInLibraryClasses(file);
}
- if (JetPluginUtil.isKtFileInGradleProjectInWrongFolder(file, project)) {
+ if (JetModuleTypeManager.getInstance().isKtFileInGradleProjectInWrongFolder(file, getProject())) {
return false;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetSuperClassIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetSuperClassIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetSuperClassIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetSuperClassIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelExtensionFunctionShortNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelExtensionFunctionShortNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelExtensionFunctionShortNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelExtensionFunctionShortNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelFunctionsFqnNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelFunctionsFqnNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelFunctionsFqnNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelFunctionsFqnNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelNonExtensionFunctionShortNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelNonExtensionFunctionShortNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelNonExtensionFunctionShortNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelNonExtensionFunctionShortNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelObjectShortNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelObjectShortNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelObjectShortNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelObjectShortNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelPropertiesFqnNameIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelPropertiesFqnNameIndex.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelPropertiesFqnNameIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/JetTopLevelPropertiesFqnNameIndex.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/KotlinIndexUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/KotlinIndexUtil.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/KotlinIndexUtil.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/KotlinIndexUtil.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/CombinedPackageMemberDeclarationProvider.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/CombinedPackageMemberDeclarationProvider.kt
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/resolve/CombinedPackageMemberDeclarationProvider.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/CombinedPackageMemberDeclarationProvider.kt
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactory.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactory.kt
similarity index 97%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactory.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactory.kt
index f4485f9bd6b..0215a6918be 100644
--- a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactory.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactory.kt
@@ -18,14 +18,12 @@ package org.jetbrains.jet.plugin.stubindex.resolve
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
-import org.jetbrains.annotations.Nullable
import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo
import org.jetbrains.jet.lang.resolve.lazy.declarations.*
import org.jetbrains.jet.lang.resolve.name.FqName
import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex
import org.jetbrains.jet.storage.StorageManager
-import java.util.Arrays
public class PluginDeclarationProviderFactory(
private val project: Project,
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt
index 4d01e26c632..346ce4d520f 100644
--- a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt
@@ -35,4 +35,4 @@ public class PluginDeclarationProviderFactoryService : DeclarationProviderFactor
return PluginDeclarationProviderFactory(project, JetSourceFilterScope.kotlinSources(filesScope, project),
storageManager, syntheticFiles)
}
-}
\ No newline at end of file
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt
similarity index 99%
rename from idea/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt
index 29596c3c4e0..a94fbfbd120 100644
--- a/idea/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt
@@ -75,4 +75,4 @@ private val TOP_LEVEL_DECLARATION_INDICES: List candidateClassNames = ImmutableList.of(
+ kotlinPackageClassFqName,
+ "kotlin.Unit",
+ // For older versions
+ "kotlin.namespace",
+ "jet.Unit"
+ );
+
+ for (String className : candidateClassNames) {
+ PsiClass psiClass = JavaPsiFacade.getInstance(scope.getProject()).findClass(className, scope);
+ if (psiClass != null) {
+ return psiClass;
+ }
+ }
+ return null;
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/vfilefinder/IDEVirtualFileFinder.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/vfilefinder/IDEVirtualFileFinder.java
similarity index 100%
rename from idea/src/org/jetbrains/jet/plugin/vfilefinder/IDEVirtualFileFinder.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/vfilefinder/IDEVirtualFileFinder.java
diff --git a/idea/src/org/jetbrains/jet/plugin/vfilefinder/KotlinClassFileIndex.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/vfilefinder/KotlinClassFileIndex.java
similarity index 96%
rename from idea/src/org/jetbrains/jet/plugin/vfilefinder/KotlinClassFileIndex.java
rename to idea/idea-analysis/src/org/jetbrains/jet/plugin/vfilefinder/KotlinClassFileIndex.java
index 6cc42ad89df..7d3bc35cb44 100644
--- a/idea/src/org/jetbrains/jet/plugin/vfilefinder/KotlinClassFileIndex.java
+++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/vfilefinder/KotlinClassFileIndex.java
@@ -16,8 +16,8 @@
package org.jetbrains.jet.plugin.vfilefinder;
+import com.intellij.ide.highlighter.JavaClassFileType;
import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.indexing.*;
import com.intellij.util.io.KeyDescriptor;
@@ -67,7 +67,7 @@ public final class KotlinClassFileIndex extends ScalarIndexExtension {
private static final FileBasedIndex.InputFilter INPUT_FILTER = new FileBasedIndex.InputFilter() {
@Override
public boolean acceptInput(VirtualFile file) {
- return file.getFileType() == StdFileTypes.CLASS;
+ return file.getFileType() == JavaClassFileType.INSTANCE;
}
};
public static final DataIndexer INDEXER = new DataIndexer() {
diff --git a/idea/idea.iml b/idea/idea.iml
index 03e786c0560..eda998a2c96 100644
--- a/idea/idea.iml
+++ b/idea/idea.iml
@@ -41,6 +41,7 @@
+
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 33e664b9fa6..89276446ee4 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -124,6 +124,9 @@
+
+
@@ -271,7 +274,7 @@
-
+
diff --git a/idea/src/org/jetbrains/jet/plugin/JetModuleTypeManagerImpl.java b/idea/src/org/jetbrains/jet/plugin/JetModuleTypeManagerImpl.java
new file mode 100644
index 00000000000..e558adf3438
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/JetModuleTypeManagerImpl.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin;
+
+import com.intellij.facet.Facet;
+import com.intellij.facet.FacetManager;
+import com.intellij.openapi.module.Module;
+import com.intellij.openapi.module.ModuleUtilCore;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.ProjectRootManager;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiFile;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
+
+public class JetModuleTypeManagerImpl extends JetModuleTypeManager {
+ @Override
+ public boolean isKtFileInGradleProjectInWrongFolder(@NotNull PsiElement element) {
+ PsiFile containingFile = element.getContainingFile();
+ if (containingFile == null) {
+ return false;
+ }
+ VirtualFile virtualFile = containingFile.getVirtualFile();
+ if (virtualFile == null) {
+ return false;
+ }
+ return isKtFileInGradleProjectInWrongFolder(virtualFile, element.getProject());
+ }
+
+ @Override
+ public boolean isKtFileInGradleProjectInWrongFolder(@NotNull VirtualFile virtualFile, @NotNull Project project ) {
+ Module module = ModuleUtilCore.findModuleForFile(virtualFile, project);
+ if (module == null) return false;
+
+ if (!isAndroidGradleModule(module) && !isGradleModule(module)) {
+ return false;
+ }
+
+ VirtualFile sourceRootForFile = ProjectRootManager.getInstance(project).getFileIndex().getSourceRootForFile(virtualFile);
+ if (sourceRootForFile != null) {
+ return !sourceRootForFile.getName().equals("kotlin");
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isAndroidGradleModule(@NotNull Module module) {
+ // We don't want to depend on the Android-Gradle plugin
+ // See com.android.tools.idea.gradle.util.Projects.isGradleProject()
+ for (Facet facet : FacetManager.getInstance(module).getAllFacets()) {
+ if (facet.getName().equals("Android-Gradle")) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/JetPluginUtil.java b/idea/src/org/jetbrains/jet/plugin/JetPluginUtil.java
index 20367e7c616..d4682ca39b0 100644
--- a/idea/src/org/jetbrains/jet/plugin/JetPluginUtil.java
+++ b/idea/src/org/jetbrains/jet/plugin/JetPluginUtil.java
@@ -16,39 +16,17 @@
package org.jetbrains.jet.plugin;
-import com.intellij.facet.Facet;
-import com.intellij.facet.FacetManager;
import com.intellij.ide.plugins.IdeaPluginDescriptor;
import com.intellij.ide.plugins.PluginManager;
import com.intellij.openapi.extensions.PluginId;
import com.intellij.openapi.module.Module;
-import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.ProjectFileIndex;
-import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jet.plugin.configuration.ModuleTypeCacheManager;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
public class JetPluginUtil {
- public static boolean isInSource(@NotNull PsiElement element) {
- return isInSource(element, true);
- }
-
- public static boolean isInSource(@NotNull PsiElement element, boolean includeLibrarySources) {
- PsiFile containingFile = element.getContainingFile();
- if (containingFile == null) {
- return false;
- }
- VirtualFile virtualFile = containingFile.getVirtualFile();
- if (virtualFile == null) {
- return false;
- }
- ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(element.getProject());
- return includeLibrarySources ? index.isInSource(virtualFile) : index.isInSourceContent(virtualFile);
- }
@NotNull
public static String getPluginVersion() {
@@ -58,45 +36,19 @@ public class JetPluginUtil {
}
public static boolean isKtFileInGradleProjectInWrongFolder(@NotNull PsiElement element) {
- PsiFile containingFile = element.getContainingFile();
- if (containingFile == null) {
- return false;
- }
- VirtualFile virtualFile = containingFile.getVirtualFile();
- if (virtualFile == null) {
- return false;
- }
- return isKtFileInGradleProjectInWrongFolder(virtualFile, element.getProject());
+ return JetModuleTypeManager.getInstance().isKtFileInGradleProjectInWrongFolder(element);
}
public static boolean isKtFileInGradleProjectInWrongFolder(@NotNull VirtualFile virtualFile, @NotNull Project project) {
- Module module = ModuleUtilCore.findModuleForFile(virtualFile, project);
- if (module == null) return false;
-
- if (!isAndroidGradleModule(module) && !isGradleModule(module)) {
- return false;
- }
-
- VirtualFile sourceRootForFile = ProjectRootManager.getInstance(project).getFileIndex().getSourceRootForFile(virtualFile);
- if (sourceRootForFile != null) {
- return !sourceRootForFile.getName().equals("kotlin");
- }
- return false;
+ return JetModuleTypeManager.getInstance().isKtFileInGradleProjectInWrongFolder(virtualFile, project);
}
public static boolean isAndroidGradleModule(@NotNull Module module) {
- // We don't want to depend on the Android-Gradle plugin
- // See com.android.tools.idea.gradle.util.Projects.isGradleProject()
- for (Facet facet : FacetManager.getInstance(module).getAllFacets()) {
- if (facet.getName().equals("Android-Gradle")) {
- return true;
- }
- }
- return false;
+ return JetModuleTypeManager.getInstance().isAndroidGradleModule(module);
}
public static boolean isGradleModule(@NotNull Module module) {
- return ModuleTypeCacheManager.OBJECT$.geInstance(module.getProject()).isGradleModule(module);
+ return JetModuleTypeManager.getInstance().isGradleModule(module);
}
public static boolean isMavenModule(@NotNull Module module) {
diff --git a/idea/src/org/jetbrains/jet/plugin/PluginBundledRegistrar.java b/idea/src/org/jetbrains/jet/plugin/PluginBundledRegistrar.java
index 8fa0cf6c161..806840ff0d5 100644
--- a/idea/src/org/jetbrains/jet/plugin/PluginBundledRegistrar.java
+++ b/idea/src/org/jetbrains/jet/plugin/PluginBundledRegistrar.java
@@ -19,6 +19,7 @@ package org.jetbrains.jet.plugin;
import com.intellij.openapi.application.PathMacros;
import com.intellij.openapi.components.ApplicationComponent;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.plugin.quickfix.QuickFixRegistrar;
import org.jetbrains.jet.utils.PathUtil;
public class PluginBundledRegistrar implements ApplicationComponent {
@@ -33,6 +34,7 @@ public class PluginBundledRegistrar implements ApplicationComponent {
@Override
public void initComponent() {
registerPathVariable();
+ QuickFixRegistrar.registerQuickFixes();
}
private static void registerPathVariable() {
diff --git a/idea/src/org/jetbrains/jet/plugin/actions/internal/KotlinInternalModeToggleAction.kt b/idea/src/org/jetbrains/jet/plugin/actions/internal/KotlinInternalModeToggleAction.kt
index 521a3dcd880..6ed23261e39 100644
--- a/idea/src/org/jetbrains/jet/plugin/actions/internal/KotlinInternalModeToggleAction.kt
+++ b/idea/src/org/jetbrains/jet/plugin/actions/internal/KotlinInternalModeToggleAction.kt
@@ -18,29 +18,15 @@ package org.jetbrains.jet.plugin.actions.internal
import com.intellij.openapi.actionSystem.ToggleAction
import com.intellij.openapi.actionSystem.AnActionEvent
-import com.intellij.ide.util.PropertiesComponent
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
public class KotlinInternalModeToggleAction: ToggleAction("Kotlin Internal Mode", "Show debug highlighting", null) {
- public class object {
- val INTERNAL_MODE_PROPERTY = "kotlin.internal.mode.enabled"
-
- public var enabled: Boolean
- get() = PropertiesComponent.getInstance()!!.getBoolean(
- INTERNAL_MODE_PROPERTY,
- System.getProperty(INTERNAL_MODE_PROPERTY) == "true"
- )
- set(value) {
- PropertiesComponent.getInstance()!!.setValue(INTERNAL_MODE_PROPERTY, value.toString())
- }
- }
-
override fun isSelected(e: AnActionEvent?): Boolean {
- return enabled
+ return KotlinInternalMode.enabled
}
override fun setSelected(e: AnActionEvent?, state: Boolean) {
- enabled = state
+ KotlinInternalMode.enabled = state
DaemonCodeAnalyzer.getInstance(e!!.getProject())!!.settingsChanged()
}
diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinInProjectUtils.java b/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinInProjectUtils.java
index 4bcdc73f774..4d2d173554f 100644
--- a/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinInProjectUtils.java
+++ b/idea/src/org/jetbrains/jet/plugin/configuration/ConfigureKotlinInProjectUtils.java
@@ -54,14 +54,6 @@ public class ConfigureKotlinInProjectUtils {
return false;
}
- public static boolean hasKotlinFilesInSources(@NotNull Module module) {
- return FileTypeIndex.containsFileOfType(JetFileType.INSTANCE, module.getModuleScope(false));
- }
-
- public static boolean hasKotlinFilesOnlyInTests(@NotNull Module module) {
- return !hasKotlinFilesInSources(module) && FileTypeIndex.containsFileOfType(JetFileType.INSTANCE, module.getModuleScope(true));
- }
-
public static Collection getModulesWithKotlinFiles(@NotNull Project project) {
if (project.isDisposed()) {
return Collections.emptyList();
diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJavaModuleConfigurator.java b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJavaModuleConfigurator.java
index 259db927abc..2525d82781d 100644
--- a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJavaModuleConfigurator.java
+++ b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJavaModuleConfigurator.java
@@ -29,7 +29,7 @@ import org.jetbrains.jet.plugin.framework.JavaRuntimeLibraryDescription;
import org.jetbrains.jet.plugin.framework.JavaRuntimePresentationProvider;
import org.jetbrains.jet.plugin.framework.ui.CreateJavaLibraryDialogWithModules;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
-import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryUtil;
+import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryCoreUtil;
import org.jetbrains.jet.utils.PathUtil;
import java.io.File;
@@ -175,7 +175,7 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator
}
LibraryScope scope = new LibraryScope(project, library);
- return KotlinRuntimeLibraryUtil.getKotlinRuntimeMarkerClass(scope) != null;
+ return KotlinRuntimeLibraryCoreUtil.getKotlinRuntimeMarkerClass(scope) != null;
}
KotlinJavaModuleConfigurator() {
diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java
index aa54ce8a1fe..5ddb77c9aeb 100644
--- a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java
+++ b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java
@@ -35,6 +35,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.framework.ui.FileUIUtils;
+import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import java.io.File;
@@ -286,7 +287,7 @@ public abstract class KotlinWithLibraryConfigurator implements KotlinProjectConf
@NotNull
private static DependencyScope getDependencyScope(@NotNull Module module) {
- if (ConfigureKotlinInProjectUtils.hasKotlinFilesOnlyInTests(module)) {
+ if (ProjectStructureUtil.hasKotlinFilesOnlyInTests(module)) {
return DependencyScope.TEST;
}
return DependencyScope.COMPILE;
diff --git a/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdPresentationProvider.java b/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdPresentationProvider.java
index 73da839e882..1c30642f5ff 100644
--- a/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdPresentationProvider.java
+++ b/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdPresentationProvider.java
@@ -18,11 +18,8 @@ package org.jetbrains.jet.plugin.framework;
import com.intellij.framework.library.LibraryVersionProperties;
import com.intellij.openapi.roots.OrderRootType;
-import com.intellij.openapi.roots.libraries.JarVersionDetectionUtil;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryPresentationProvider;
-import com.intellij.openapi.vfs.JarFile;
-import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -30,7 +27,6 @@ import org.jetbrains.jet.plugin.JetIcons;
import org.jetbrains.jet.utils.PathUtil;
import javax.swing.*;
-import java.io.IOException;
import java.util.List;
public class JSLibraryStdPresentationProvider extends LibraryPresentationProvider {
@@ -51,27 +47,8 @@ public class JSLibraryStdPresentationProvider extends LibraryPresentationProvide
@Nullable
@Override
public LibraryVersionProperties detect(@NotNull List classesRoots) {
- if (JavaRuntimePresentationProvider.getInstance().detect(classesRoots) != null) {
- // Prevent clashing with java runtime, in case when library collects all roots.
- return null;
- }
-
- for (VirtualFile root : classesRoots) {
- if (root.getName().equals(PathUtil.JS_LIB_JAR_NAME)) {
- assert JsHeaderLibraryPresentationProvider.getInstance().detect(classesRoots) != null : "StdLib should also be detected as headers library";
-
- try {
- JarFile zipFile = JarFileSystem.getInstance().getJarFile(root);
- String version = JarVersionDetectionUtil.detectJarVersion(zipFile);
- return new LibraryVersionProperties(version);
- }
- catch (IOException e) {
- return null;
- }
- }
- }
-
- return null;
+ String version = JsLibraryStdDetectionUtil.getJsLibraryStdVersion(classesRoots);
+ return version == null ? null : new LibraryVersionProperties(version);
}
/**
diff --git a/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimePresentationProvider.java b/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimePresentationProvider.java
index 4bfe29dea4f..856003f00f8 100644
--- a/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimePresentationProvider.java
+++ b/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimePresentationProvider.java
@@ -18,11 +18,8 @@ package org.jetbrains.jet.plugin.framework;
import com.intellij.framework.library.LibraryVersionProperties;
import com.intellij.openapi.roots.OrderRootType;
-import com.intellij.openapi.roots.libraries.JarVersionDetectionUtil;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryPresentationProvider;
-import com.intellij.openapi.vfs.JarFile;
-import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -30,7 +27,6 @@ import org.jetbrains.jet.plugin.JetIcons;
import org.jetbrains.jet.utils.PathUtil;
import javax.swing.*;
-import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@@ -52,44 +48,18 @@ public class JavaRuntimePresentationProvider extends LibraryPresentationProvider
@Nullable
@Override
public LibraryVersionProperties detect(@NotNull List classesRoots) {
- VirtualFile stdJar = getRuntimeJar(classesRoots);
- if (stdJar != null) {
- try {
- JarFile zipFile = JarFileSystem.getInstance().getJarFile(stdJar);
- String version = JarVersionDetectionUtil.detectJarVersion(zipFile);
- return new LibraryVersionProperties(version);
- }
- catch (IOException e) {
- return null;
- }
- }
-
- return null;
- }
-
- @Nullable
- public static VirtualFile getRuntimeJar(@NotNull List classesRoots) {
- return getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_JAR);
+ String version = JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots);
+ return version == null ? null : new LibraryVersionProperties(version);
}
@Nullable
public static VirtualFile getRuntimeSrcJar(@NotNull List classesRoots) {
- return getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_SRC_JAR);
- }
-
- private static VirtualFile getJarFile(@NotNull List classesRoots, @NotNull String jarName) {
- for (VirtualFile root : classesRoots) {
- if (root.getName().equals(jarName)) {
- return root;
- }
- }
-
- return null;
+ return JavaRuntimeDetectionUtil.getJarFile(classesRoots, PathUtil.KOTLIN_JAVA_RUNTIME_SRC_JAR);
}
@Nullable
public static VirtualFile getRuntimeJar(@NotNull Library library) {
- return getRuntimeJar(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
+ return JavaRuntimeDetectionUtil.getRuntimeJar(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
}
@Nullable
diff --git a/idea/src/org/jetbrains/jet/plugin/framework/JsHeaderLibraryPresentationProvider.java b/idea/src/org/jetbrains/jet/plugin/framework/JsHeaderLibraryPresentationProvider.java
index b24e24cd4cf..fcaa0de9dcc 100644
--- a/idea/src/org/jetbrains/jet/plugin/framework/JsHeaderLibraryPresentationProvider.java
+++ b/idea/src/org/jetbrains/jet/plugin/framework/JsHeaderLibraryPresentationProvider.java
@@ -19,12 +19,9 @@ package org.jetbrains.jet.plugin.framework;
import com.intellij.framework.library.LibraryVersionProperties;
import com.intellij.openapi.roots.libraries.LibraryKind;
import com.intellij.openapi.roots.libraries.LibraryPresentationProvider;
-import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.util.CommonProcessors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.jet.plugin.JetFileType;
import org.jetbrains.jet.plugin.JetIcons;
import javax.swing.*;
@@ -50,27 +47,6 @@ public class JsHeaderLibraryPresentationProvider extends LibraryPresentationProv
@Nullable
@Override
public LibraryVersionProperties detect(@NotNull List classesRoots) {
- if (JavaRuntimePresentationProvider.getInstance().detect(classesRoots) != null) {
- // Prevent clashing with java runtime
- return null;
- }
-
- for (VirtualFile file : classesRoots) {
- CommonProcessors.FindFirstProcessor findKTProcessor = new CommonProcessors.FindFirstProcessor() {
- @Override
- protected boolean accept(VirtualFile file) {
- String extension = file.getExtension();
- return extension != null && extension.equals(JetFileType.INSTANCE.getDefaultExtension());
- }
- };
-
- VfsUtil.processFilesRecursively(file, findKTProcessor);
-
- if (findKTProcessor.isFound()) {
- return new LibraryVersionProperties(null);
- }
- }
-
- return null;
+ return JsHeaderLibraryDetectionUtil.isJsHeaderLibraryDetected(classesRoots) ? new LibraryVersionProperties(null) : null;
}
}
diff --git a/idea/src/org/jetbrains/jet/plugin/hierarchy/HierarchyUtils.java b/idea/src/org/jetbrains/jet/plugin/hierarchy/HierarchyUtils.java
index 20b0f1e706e..c75fa3c3ebb 100644
--- a/idea/src/org/jetbrains/jet/plugin/hierarchy/HierarchyUtils.java
+++ b/idea/src/org/jetbrains/jet/plugin/hierarchy/HierarchyUtils.java
@@ -25,9 +25,13 @@ import com.intellij.psi.*;
import com.intellij.util.ArrayUtil;
import kotlin.Function1;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.jet.lang.psi.JetClassOrObject;
+import org.jetbrains.jet.lang.psi.JetFile;
+import org.jetbrains.jet.lang.psi.JetNamedFunction;
+import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.psiUtil.PsiUtilPackage;
import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
public class HierarchyUtils {
public static final Function1 IS_CALL_HIERARCHY_ELEMENT = new Function1() {
@@ -57,7 +61,7 @@ public class HierarchyUtils {
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
if (file == null) return null;
- if (!JetPluginUtil.isInSource(file)) return null;
+ if (!ProjectRootsUtil.isInSource(file)) return null;
if (JetPluginUtil.isKtFileInGradleProjectInWrongFolder(file)) return null;
return TargetElementUtilBase.findTargetElement(editor, TargetElementUtilBase.getInstance().getAllAccepted());
diff --git a/idea/src/org/jetbrains/jet/plugin/hierarchy/KotlinTypeHierarchyProvider.java b/idea/src/org/jetbrains/jet/plugin/hierarchy/KotlinTypeHierarchyProvider.java
index fb7b392cc77..c119d41f33a 100644
--- a/idea/src/org/jetbrains/jet/plugin/hierarchy/KotlinTypeHierarchyProvider.java
+++ b/idea/src/org/jetbrains/jet/plugin/hierarchy/KotlinTypeHierarchyProvider.java
@@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.libraries.JetSourceNavigationHelper;
import org.jetbrains.jet.plugin.stubindex.JetClassShortNameIndex;
@@ -54,7 +55,7 @@ public class KotlinTypeHierarchyProvider extends JavaTypeHierarchyProvider {
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
if (file == null) return null;
- if (!JetPluginUtil.isInSource(file)) return null;
+ if (!ProjectRootsUtil.isInSource(file)) return null;
if (JetPluginUtil.isKtFileInGradleProjectInWrongFolder(file)) return null;
PsiElement target = TargetElementUtilBase.findTargetElement(editor, TargetElementUtilBase.getInstance().getAllAccepted());
diff --git a/idea/src/org/jetbrains/jet/plugin/hierarchy/calls/KotlinCallHierarchyProvider.java b/idea/src/org/jetbrains/jet/plugin/hierarchy/calls/KotlinCallHierarchyProvider.java
index 21b655c9f16..5c03c055a10 100644
--- a/idea/src/org/jetbrains/jet/plugin/hierarchy/calls/KotlinCallHierarchyProvider.java
+++ b/idea/src/org/jetbrains/jet/plugin/hierarchy/calls/KotlinCallHierarchyProvider.java
@@ -29,6 +29,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
import org.jetbrains.jet.plugin.hierarchy.HierarchyUtils;
public class KotlinCallHierarchyProvider implements HierarchyProvider {
@@ -46,7 +47,7 @@ public class KotlinCallHierarchyProvider implements HierarchyProvider {
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
if (file == null) return null;
- if (!JetPluginUtil.isInSource(file)) return null;
+ if (!ProjectRootsUtil.isInSource(file)) return null;
if (JetPluginUtil.isKtFileInGradleProjectInWrongFolder(file)) return null;
return TargetElementUtilBase.findTargetElement(editor, TargetElementUtilBase.getInstance().getAllAccepted());
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/DeclarationHintSupport.java b/idea/src/org/jetbrains/jet/plugin/highlighter/DeclarationHintSupport.java
index 86ffdf551b8..6694d80dac8 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/DeclarationHintSupport.java
+++ b/idea/src/org/jetbrains/jet/plugin/highlighter/DeclarationHintSupport.java
@@ -43,8 +43,9 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.plugin.JetLanguage;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
import org.jetbrains.jet.plugin.util.LongRunningReadTask;
import org.jetbrains.jet.renderer.DescriptorRenderer;
@@ -89,8 +90,8 @@ public class DeclarationHintSupport extends AbstractProjectComponent {
Editor editor = e.getEditor();
PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(editor.getDocument());
if (psiFile == null || psiFile.getLanguage() != JetLanguage.INSTANCE ||
- !JetPluginUtil.isInSource(psiFile) ||
- JetPluginUtil.isKtFileInGradleProjectInWrongFolder(psiFile)) {
+ !ProjectRootsUtil.isInSource(psiFile) ||
+ JetModuleTypeManager.getInstance().isKtFileInGradleProjectInWrongFolder(psiFile)) {
return;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java
index eaf24a85c1b..3378575d648 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java
+++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java
@@ -61,9 +61,10 @@ import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lexer.JetTokens;
import org.jetbrains.jet.plugin.JetBundle;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.codeInsight.JetFunctionPsiElementCellRenderer;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache;
import org.jetbrains.jet.plugin.search.ideaExtensions.KotlinDefinitionsSearcher;
import org.jetbrains.jet.renderer.DescriptorRenderer;
@@ -369,8 +370,8 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
public void collectSlowLineMarkers(@NotNull List elements, @NotNull Collection result) {
if (elements.isEmpty() ||
DumbService.getInstance(elements.get(0).getProject()).isDumb() ||
- !JetPluginUtil.isInSource(elements.get(0)) ||
- JetPluginUtil.isKtFileInGradleProjectInWrongFolder(elements.get(0))) {
+ !ProjectRootsUtil.isInSource(elements.get(0)) ||
+ JetModuleTypeManager.getInstance().isKtFileInGradleProjectInWrongFolder(elements.get(0))) {
return;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiCheckerAndHighlightingUpdater.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiCheckerAndHighlightingUpdater.java
new file mode 100644
index 00000000000..703445fe154
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiCheckerAndHighlightingUpdater.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.highlighter;
+
+import com.intellij.lang.annotation.AnnotationHolder;
+import com.intellij.openapi.progress.ProcessCanceledException;
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.lang.psi.JetFile;
+
+public class JetPsiCheckerAndHighlightingUpdater extends JetPsiChecker {
+ @Override
+ public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) {
+ try {
+ super.annotate(element, holder);
+ if (element instanceof JetFile) {
+ //noinspection StaticMethodReferencedViaSubclass
+ HighlighterPackage.updateHighlightingResult((JetFile) element, false);
+ }
+ }
+ catch (ProcessCanceledException e) {
+ HighlighterPackage.updateHighlightingResult((JetFile)element.getContainingFile(), false);
+ throw e;
+ }
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/ReplaceWithOperatorAssignIntention.kt b/idea/src/org/jetbrains/jet/plugin/intentions/ReplaceWithOperatorAssignIntention.kt
index 2bb7f0a62b5..f10d9a38dc9 100644
--- a/idea/src/org/jetbrains/jet/plugin/intentions/ReplaceWithOperatorAssignIntention.kt
+++ b/idea/src/org/jetbrains/jet/plugin/intentions/ReplaceWithOperatorAssignIntention.kt
@@ -28,15 +28,6 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
public class ReplaceWithOperatorAssignIntention : JetSelfTargetingIntention("replace.with.operator.assign.intention", javaClass()) {
- /*
- * setText() is a protected function, which is inaccessible from this class.
- * This override is a workaround for this issue.
- *
- * (Related to Issue KT-4617)
- */
- override fun setText(text: String) {
- super.setText(text)
- }
override fun isApplicableTo(element: JetBinaryExpression): Boolean {
fun isWellFormedAssignment(element : JetBinaryExpression): Boolean {
diff --git a/idea/src/org/jetbrains/jet/plugin/internal/KotlinBytecodeToolWindow.java b/idea/src/org/jetbrains/jet/plugin/internal/KotlinBytecodeToolWindow.java
index e7aa9f73eb7..9e4b957ac08 100644
--- a/idea/src/org/jetbrains/jet/plugin/internal/KotlinBytecodeToolWindow.java
+++ b/idea/src/org/jetbrains/jet/plugin/internal/KotlinBytecodeToolWindow.java
@@ -45,7 +45,7 @@ import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.codegen.state.Progress;
import org.jetbrains.jet.lang.diagnostics.DiagnosticHolder;
import org.jetbrains.jet.lang.psi.JetFile;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.util.InfinitePeriodicalTask;
import org.jetbrains.jet.plugin.util.LongRunningReadTask;
@@ -79,7 +79,7 @@ public class KotlinBytecodeToolWindow extends JPanel implements Disposable {
}
JetFile file = location.getJetFile();
- if (file == null || !JetPluginUtil.isInSource(file, false)) {
+ if (file == null || !ProjectRootsUtil.isInSource(file, false)) {
return null;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixRegistrar.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixRegistrar.java
new file mode 100644
index 00000000000..1de3f9757d4
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixRegistrar.java
@@ -0,0 +1,243 @@
+/*
+ * Copyright 2010-2014 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.jet.plugin.quickfix;
+
+import org.jetbrains.jet.lang.psi.JetClass;
+import org.jetbrains.jet.plugin.codeInsight.ImplementMethodsHandler;
+
+import static org.jetbrains.jet.lang.diagnostics.Errors.*;
+import static org.jetbrains.jet.lexer.JetTokens.*;
+
+public class QuickFixRegistrar {
+ public static void registerQuickFixes() {
+ JetSingleIntentionActionFactory
+ removeAbstractModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ABSTRACT_KEYWORD);
+ JetSingleIntentionActionFactory addAbstractModifierFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD);
+
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_IN_PRIMARY_CONSTRUCTOR_PARAMETERS, removeAbstractModifierFactory);
+
+ JetSingleIntentionActionFactory removePartsFromPropertyFactory = RemovePartsFromPropertyFix.createFactory();
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_WITH_INITIALIZER, removeAbstractModifierFactory);
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_WITH_INITIALIZER, removePartsFromPropertyFactory);
+
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_WITH_GETTER, removeAbstractModifierFactory);
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_WITH_GETTER, removePartsFromPropertyFactory);
+
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_WITH_SETTER, removeAbstractModifierFactory);
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_WITH_SETTER, removePartsFromPropertyFactory);
+
+ QuickFixes.factories.put(PROPERTY_INITIALIZER_IN_TRAIT, removePartsFromPropertyFactory);
+
+ QuickFixes.factories.put(MUST_BE_INITIALIZED_OR_BE_ABSTRACT, addAbstractModifierFactory);
+
+ JetSingleIntentionActionFactory removeFinalModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(FINAL_KEYWORD);
+
+ JetSingleIntentionActionFactory addAbstractToClassFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD, JetClass.class);
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS, removeAbstractModifierFactory);
+ QuickFixes.factories.put(ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS, addAbstractToClassFactory);
+
+ JetSingleIntentionActionFactory removeFunctionBodyFactory = RemoveFunctionBodyFix.createFactory();
+ QuickFixes.factories.put(ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS, removeAbstractModifierFactory);
+ QuickFixes.factories.put(ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS, addAbstractToClassFactory);
+
+ QuickFixes.factories.put(ABSTRACT_FUNCTION_WITH_BODY, removeAbstractModifierFactory);
+ QuickFixes.factories.put(ABSTRACT_FUNCTION_WITH_BODY, removeFunctionBodyFactory);
+
+ QuickFixes.factories.put(FINAL_PROPERTY_IN_TRAIT, removeFinalModifierFactory);
+ QuickFixes.factories.put(FINAL_FUNCTION_WITH_NO_BODY, removeFinalModifierFactory);
+
+ JetSingleIntentionActionFactory addFunctionBodyFactory = AddFunctionBodyFix.createFactory();
+ QuickFixes.factories.put(NON_ABSTRACT_FUNCTION_WITH_NO_BODY, addAbstractModifierFactory);
+ QuickFixes.factories.put(NON_ABSTRACT_FUNCTION_WITH_NO_BODY, addFunctionBodyFactory);
+
+ QuickFixes.factories.put(NON_VARARG_SPREAD, RemovePsiElementSimpleFix.createRemoveSpreadFactory());
+
+ QuickFixes.factories.put(MIXING_NAMED_AND_POSITIONED_ARGUMENTS, AddNameToArgumentFix.createFactory());
+
+ QuickFixes.factories.put(NON_MEMBER_FUNCTION_NO_BODY, addFunctionBodyFactory);
+
+ QuickFixes.factories.put(NOTHING_TO_OVERRIDE, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OVERRIDE_KEYWORD));
+ QuickFixes.factories.put(NOTHING_TO_OVERRIDE, ChangeMemberFunctionSignatureFix.createFactory());
+ QuickFixes.factories.put(NOTHING_TO_OVERRIDE, AddFunctionToSupertypeFix.createFactory());
+ QuickFixes.factories.put(VIRTUAL_MEMBER_HIDDEN, AddModifierFix.createFactory(OVERRIDE_KEYWORD));
+
+ QuickFixes.factories.put(USELESS_CAST_STATIC_ASSERT_IS_FINE, ReplaceOperationInBinaryExpressionFix.createChangeCastToStaticAssertFactory());
+ QuickFixes.factories.put(USELESS_CAST, RemoveRightPartOfBinaryExpressionFix.createRemoveCastFactory());
+
+ JetSingleIntentionActionFactory changeAccessorTypeFactory = ChangeAccessorTypeFix.createFactory();
+ QuickFixes.factories.put(WRONG_SETTER_PARAMETER_TYPE, changeAccessorTypeFactory);
+ QuickFixes.factories.put(WRONG_GETTER_RETURN_TYPE, changeAccessorTypeFactory);
+
+ QuickFixes.factories.put(USELESS_ELVIS, RemoveRightPartOfBinaryExpressionFix.createRemoveElvisOperatorFactory());
+
+ JetSingleIntentionActionFactory removeRedundantModifierFactory = RemoveModifierFix.createRemoveModifierFactory(true);
+ QuickFixes.factories.put(REDUNDANT_MODIFIER, removeRedundantModifierFactory);
+ QuickFixes.factories.put(ABSTRACT_MODIFIER_IN_TRAIT, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ABSTRACT_KEYWORD, true));
+ QuickFixes.factories.put(OPEN_MODIFIER_IN_TRAIT, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD, true));
+ QuickFixes.factories.put(TRAIT_CAN_NOT_BE_FINAL, removeFinalModifierFactory);
+ QuickFixes.factories.put(REDUNDANT_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory(true));
+ QuickFixes.factories.put(INCOMPATIBLE_MODIFIERS, RemoveModifierFix.createRemoveModifierFactory(false));
+ QuickFixes.factories.put(VARIANCE_ON_TYPE_PARAMETER_OF_FUNCTION_OR_PROPERTY, RemoveModifierFix.createRemoveVarianceFactory());
+
+ JetSingleIntentionActionFactory removeOpenModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD);
+ QuickFixes.factories.put(NON_FINAL_MEMBER_IN_FINAL_CLASS, AddModifierFix.createFactory(OPEN_KEYWORD, JetClass.class));
+ QuickFixes.factories.put(NON_FINAL_MEMBER_IN_FINAL_CLASS, removeOpenModifierFactory);
+
+ JetSingleIntentionActionFactory removeModifierFactory = RemoveModifierFix.createRemoveModifierFactory();
+ QuickFixes.factories.put(GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY, removeModifierFactory);
+ QuickFixes.factories.put(REDUNDANT_MODIFIER_IN_GETTER, removeRedundantModifierFactory);
+ QuickFixes.factories.put(ILLEGAL_MODIFIER, removeModifierFactory);
+
+ JetSingleIntentionActionFactory changeToBackingFieldFactory = ChangeToBackingFieldFix.createFactory();
+ QuickFixes.factories.put(INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER, changeToBackingFieldFactory);
+ QuickFixes.factories.put(INITIALIZATION_USING_BACKING_FIELD_OPEN_SETTER, changeToBackingFieldFactory);
+
+ JetSingleIntentionActionFactory changeToPropertyNameFactory = ChangeToPropertyNameFix.createFactory();
+ QuickFixes.factories.put(NO_BACKING_FIELD_ABSTRACT_PROPERTY, changeToPropertyNameFactory);
+ QuickFixes.factories.put(NO_BACKING_FIELD_CUSTOM_ACCESSORS, changeToPropertyNameFactory);
+ QuickFixes.factories.put(INACCESSIBLE_BACKING_FIELD, changeToPropertyNameFactory);
+
+ JetSingleIntentionActionFactory unresolvedReferenceFactory = AutoImportFix.createFactory();
+ QuickFixes.factories.put(UNRESOLVED_REFERENCE, unresolvedReferenceFactory);
+ QuickFixes.factories.put(UNRESOLVED_REFERENCE_WRONG_RECEIVER, unresolvedReferenceFactory);
+
+ JetSingleIntentionActionFactory removeImportFixFactory = RemovePsiElementSimpleFix.createRemoveImportFactory();
+ QuickFixes.factories.put(USELESS_SIMPLE_IMPORT, removeImportFixFactory);
+ QuickFixes.factories.put(USELESS_HIDDEN_IMPORT, removeImportFixFactory);
+
+ QuickFixes.factories.put(SUPERTYPE_NOT_INITIALIZED, ChangeToConstructorInvocationFix.createFactory());
+ QuickFixes.factories.put(FUNCTION_CALL_EXPECTED, ChangeToFunctionInvocationFix.createFactory());
+
+ QuickFixes.factories.put(CANNOT_CHANGE_ACCESS_PRIVILEGE, ChangeVisibilityModifierFix.createFactory());
+ QuickFixes.factories.put(CANNOT_WEAKEN_ACCESS_PRIVILEGE, ChangeVisibilityModifierFix.createFactory());
+
+ QuickFixes.factories.put(REDUNDANT_NULLABLE, RemoveNullableFix.createFactory(RemoveNullableFix.NullableKind.REDUNDANT));
+ QuickFixes.factories.put(NULLABLE_SUPERTYPE, RemoveNullableFix.createFactory(RemoveNullableFix.NullableKind.SUPERTYPE));
+ QuickFixes.factories.put(USELESS_NULLABLE_CHECK, RemoveNullableFix.createFactory(RemoveNullableFix.NullableKind.USELESS));
+
+
+ ImplementMethodsHandler implementMethodsHandler = new ImplementMethodsHandler();
+ QuickFixes.actions.put(ABSTRACT_MEMBER_NOT_IMPLEMENTED, implementMethodsHandler);
+ QuickFixes.actions.put(MANY_IMPL_MEMBER_NOT_IMPLEMENTED, implementMethodsHandler);
+
+ ChangeVariableMutabilityFix changeVariableMutabilityFix = new ChangeVariableMutabilityFix();
+ QuickFixes.actions.put(VAL_WITH_SETTER, changeVariableMutabilityFix);
+ QuickFixes.actions.put(VAL_REASSIGNMENT, changeVariableMutabilityFix);
+ QuickFixes.actions.put(VAR_OVERRIDDEN_BY_VAL, changeVariableMutabilityFix);
+
+ RemoveValVarFromParametersFix removeValVarFromParametersFix = new RemoveValVarFromParametersFix();
+ QuickFixes.actions.put(VAL_OR_VAR_ON_FUN_PARAMETER, removeValVarFromParametersFix);
+ QuickFixes.actions.put(VAL_OR_VAR_ON_LOOP_PARAMETER, removeValVarFromParametersFix);
+ QuickFixes.actions.put(VAL_OR_VAR_ON_CATCH_PARAMETER, removeValVarFromParametersFix);
+
+ QuickFixes.factories.put(VIRTUAL_MEMBER_HIDDEN, AddOverrideToEqualsHashCodeToStringFix.createFactory());
+
+ QuickFixes.factories.put(UNUSED_VARIABLE, RemovePsiElementSimpleFix.createRemoveVariableFactory());
+
+ QuickFixes.actions.put(UNNECESSARY_SAFE_CALL, ReplaceCallFix.toDotCallFromSafeCall());
+ QuickFixes.actions.put(UNSAFE_CALL, ReplaceCallFix.toSafeCall());
+
+ QuickFixes.actions.put(UNSAFE_CALL, ExclExclCallFix.introduceExclExclCall());
+ QuickFixes.actions.put(UNNECESSARY_NOT_NULL_ASSERTION, ExclExclCallFix.removeExclExclCall());
+ QuickFixes.factories.put(UNSAFE_INFIX_CALL, ReplaceInfixCallFix.createFactory());
+
+ JetSingleIntentionActionFactory removeProtectedModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(PROTECTED_KEYWORD);
+ QuickFixes.factories.put(PACKAGE_MEMBER_CANNOT_BE_PROTECTED, removeProtectedModifierFactory);
+
+ QuickFixes.actions.put(PUBLIC_MEMBER_SHOULD_SPECIFY_TYPE, new SpecifyTypeExplicitlyFix());
+ QuickFixes.actions.put(AMBIGUOUS_ANONYMOUS_TYPE_INFERRED, new SpecifyTypeExplicitlyFix());
+
+ QuickFixes.factories.put(ELSE_MISPLACED_IN_WHEN, MoveWhenElseBranchFix.createFactory());
+ QuickFixes.factories.put(NO_ELSE_IN_WHEN, AddWhenElseBranchFix.createFactory());
+
+ QuickFixes.factories.put(NO_TYPE_ARGUMENTS_ON_RHS, AddStarProjectionsFix.createFactoryForIsExpression());
+ QuickFixes.factories.put(WRONG_NUMBER_OF_TYPE_ARGUMENTS, AddStarProjectionsFix.createFactoryForJavaClass());
+
+ QuickFixes.factories.put(TYPE_ARGUMENTS_REDUNDANT_IN_SUPER_QUALIFIER, RemovePsiElementSimpleFix.createRemoveTypeArgumentsFactory());
+
+ JetSingleIntentionActionFactory changeToStarProjectionFactory = ChangeToStarProjectionFix.createFactory();
+ QuickFixes.factories.put(UNCHECKED_CAST, changeToStarProjectionFactory);
+ QuickFixes.factories.put(CANNOT_CHECK_FOR_ERASED, changeToStarProjectionFactory);
+
+ QuickFixes.factories.put(INACCESSIBLE_OUTER_CLASS_EXPRESSION, AddModifierFix.createFactory(INNER_KEYWORD, JetClass.class));
+
+ JetSingleIntentionActionFactory addOpenModifierToClassDeclarationFix = AddOpenModifierToClassDeclarationFix.createFactory();
+ QuickFixes.factories.put(FINAL_SUPERTYPE, addOpenModifierToClassDeclarationFix);
+ QuickFixes.factories.put(FINAL_UPPER_BOUND, addOpenModifierToClassDeclarationFix);
+
+ QuickFixes.factories.put(OVERRIDING_FINAL_MEMBER, MakeOverriddenMemberOpenFix.createFactory());
+
+ QuickFixes.factories.put(PARAMETER_NAME_CHANGED_ON_OVERRIDE, RenameParameterToMatchOverriddenMethodFix.createFactory());
+
+ QuickFixes.factories.put(OPEN_MODIFIER_IN_ENUM, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD));
+ QuickFixes.factories.put(ILLEGAL_ENUM_ANNOTATION, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ENUM_KEYWORD));
+
+ QuickFixes.factories.put(NESTED_CLASS_NOT_ALLOWED, AddModifierFix.createFactory(INNER_KEYWORD));
+
+ QuickFixes.factories.put(CONFLICTING_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory(false));
+ QuickFixes.factories.put(PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT, RemoveModifierFix.createRemoveProjectionFactory(false));
+ QuickFixes.factories.put(PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE, RemoveModifierFix.createRemoveProjectionFactory(false));
+
+ QuickFixes.factories.put(NOT_AN_ANNOTATION_CLASS, MakeClassAnAnnotationClassFix.createFactory());
+
+ QuickFixes.factories.put(DANGLING_FUNCTION_LITERAL_ARGUMENT_SUSPECTED, AddSemicolonAfterFunctionCallFix.createFactory());
+
+ JetIntentionActionsFactory changeVariableTypeFix = ChangeVariableTypeFix.createFactoryForPropertyOrReturnTypeMismatchOnOverride();
+ QuickFixes.factories.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, changeVariableTypeFix);
+ QuickFixes.factories.put(PROPERTY_TYPE_MISMATCH_ON_OVERRIDE, changeVariableTypeFix);
+ QuickFixes.factories.put(COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH, ChangeVariableTypeFix.createFactoryForComponentFunctionReturnTypeMismatch());
+
+ JetSingleIntentionActionFactory changeFunctionReturnTypeFix = ChangeFunctionReturnTypeFix.createFactoryForChangingReturnTypeToUnit();
+ QuickFixes.factories.put(RETURN_TYPE_MISMATCH, changeFunctionReturnTypeFix);
+ QuickFixes.factories.put(NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY, changeFunctionReturnTypeFix);
+ QuickFixes.factories.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, ChangeFunctionReturnTypeFix.createFactoryForReturnTypeMismatchOnOverride());
+ QuickFixes.factories.put(COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH, ChangeFunctionReturnTypeFix.createFactoryForComponentFunctionReturnTypeMismatch());
+ QuickFixes.factories.put(HAS_NEXT_FUNCTION_TYPE_MISMATCH, ChangeFunctionReturnTypeFix.createFactoryForHasNextFunctionTypeMismatch());
+ QuickFixes.factories.put(COMPARE_TO_TYPE_MISMATCH, ChangeFunctionReturnTypeFix.createFactoryForCompareToTypeMismatch());
+
+ QuickFixes.factories.put(TOO_MANY_ARGUMENTS, ChangeFunctionSignatureFix.createFactory());
+ QuickFixes.factories.put(NO_VALUE_FOR_PARAMETER, ChangeFunctionSignatureFix.createFactory());
+ QuickFixes.factories.put(UNUSED_PARAMETER, ChangeFunctionSignatureFix.createFactoryForUnusedParameter());
+ QuickFixes.factories.put(EXPECTED_PARAMETERS_NUMBER_MISMATCH, ChangeFunctionSignatureFix.createFactoryForParametersNumberMismatch());
+
+ QuickFixes.factories.put(EXPECTED_PARAMETER_TYPE_MISMATCH, ChangeTypeFix.createFactoryForExpectedParameterTypeMismatch());
+ QuickFixes.factories.put(EXPECTED_RETURN_TYPE_MISMATCH, ChangeTypeFix.createFactoryForExpectedReturnTypeMismatch());
+
+ JetSingleIntentionActionFactory changeFunctionLiteralReturnTypeFix = ChangeFunctionLiteralReturnTypeFix.createFactoryForExpectedOrAssignmentTypeMismatch();
+ QuickFixes.factories.put(EXPECTED_TYPE_MISMATCH, changeFunctionLiteralReturnTypeFix);
+ QuickFixes.factories.put(ASSIGNMENT_TYPE_MISMATCH, changeFunctionLiteralReturnTypeFix);
+
+ QuickFixes.factories.put(TYPE_MISMATCH, new QuickFixFactoryForTypeMismatchError());
+
+ QuickFixes.factories.put(AUTOCAST_IMPOSSIBLE, CastExpressionFix.createFactoryForAutoCastImpossible());
+
+ QuickFixes.factories.put(PLATFORM_CLASS_MAPPED_TO_KOTLIN, MapPlatformClassToKotlinFix.createFactory());
+
+ QuickFixes.factories.put(MANY_CLASSES_IN_SUPERTYPE_LIST, RemoveSupertypeFix.createFactory());
+
+ QuickFixes.factories.put(NO_GET_METHOD, CreateFunctionFromUsageFix.OBJECT$.createCreateGetFunctionFromUsageFactory());
+ QuickFixes.factories.put(NO_SET_METHOD, CreateFunctionFromUsageFix.OBJECT$.createCreateSetFunctionFromUsageFactory());
+ JetSingleIntentionActionFactory createHasNextFromUsageFactory = CreateFunctionFromUsageFix.OBJECT$.createCreateHasNextFunctionFromUsageFactory();
+ QuickFixes.factories.put(HAS_NEXT_MISSING, createHasNextFromUsageFactory);
+ QuickFixes.factories.put(HAS_NEXT_FUNCTION_NONE_APPLICABLE, createHasNextFromUsageFactory);
+ JetSingleIntentionActionFactory createNextFromUsageFactory = CreateFunctionFromUsageFix.OBJECT$.createCreateNextFunctionFromUsageFactory();
+ QuickFixes.factories.put(NEXT_MISSING, createNextFromUsageFactory);
+ QuickFixes.factories.put(NEXT_NONE_APPLICABLE, createNextFromUsageFactory);
+ QuickFixes.factories.put(ITERATOR_MISSING, CreateFunctionFromUsageFix.OBJECT$.createCreateIteratorFunctionFromUsageFactory());
+ QuickFixes.factories.put(COMPONENT_FUNCTION_MISSING, CreateFunctionFromUsageFix.OBJECT$.createCreateComponentFunctionFromUsageFactory());
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java
deleted file mode 100644
index 3bc970ae7a8..00000000000
--- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright 2010-2013 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.jet.plugin.quickfix;
-
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimap;
-import com.intellij.codeInsight.intention.IntentionAction;
-import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory;
-import org.jetbrains.jet.lang.psi.JetClass;
-import org.jetbrains.jet.plugin.codeInsight.ImplementMethodsHandler;
-
-import java.util.Collection;
-
-import static org.jetbrains.jet.lang.diagnostics.Errors.*;
-import static org.jetbrains.jet.lexer.JetTokens.*;
-
-public class QuickFixes {
-
- private static final Multimap, JetIntentionActionsFactory> factories = HashMultimap.create();
- private static final Multimap, IntentionAction> actions = HashMultimap.create();
-
- public static Collection getActionsFactories(DiagnosticFactory> diagnosticFactory) {
- return factories.get(diagnosticFactory);
- }
-
- public static Collection getActions(DiagnosticFactory> diagnosticFactory) {
- return actions.get(diagnosticFactory);
- }
-
- private QuickFixes() {}
-
- static {
- JetSingleIntentionActionFactory removeAbstractModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ABSTRACT_KEYWORD);
- JetSingleIntentionActionFactory addAbstractModifierFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD);
-
- factories.put(ABSTRACT_PROPERTY_IN_PRIMARY_CONSTRUCTOR_PARAMETERS, removeAbstractModifierFactory);
-
- JetSingleIntentionActionFactory removePartsFromPropertyFactory = RemovePartsFromPropertyFix.createFactory();
- factories.put(ABSTRACT_PROPERTY_WITH_INITIALIZER, removeAbstractModifierFactory);
- factories.put(ABSTRACT_PROPERTY_WITH_INITIALIZER, removePartsFromPropertyFactory);
-
- factories.put(ABSTRACT_PROPERTY_WITH_GETTER, removeAbstractModifierFactory);
- factories.put(ABSTRACT_PROPERTY_WITH_GETTER, removePartsFromPropertyFactory);
-
- factories.put(ABSTRACT_PROPERTY_WITH_SETTER, removeAbstractModifierFactory);
- factories.put(ABSTRACT_PROPERTY_WITH_SETTER, removePartsFromPropertyFactory);
-
- factories.put(PROPERTY_INITIALIZER_IN_TRAIT, removePartsFromPropertyFactory);
-
- factories.put(MUST_BE_INITIALIZED_OR_BE_ABSTRACT, addAbstractModifierFactory);
-
- JetSingleIntentionActionFactory removeFinalModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(FINAL_KEYWORD);
-
- JetSingleIntentionActionFactory addAbstractToClassFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD, JetClass.class);
- factories.put(ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS, removeAbstractModifierFactory);
- factories.put(ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS, addAbstractToClassFactory);
-
- JetSingleIntentionActionFactory removeFunctionBodyFactory = RemoveFunctionBodyFix.createFactory();
- factories.put(ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS, removeAbstractModifierFactory);
- factories.put(ABSTRACT_FUNCTION_IN_NON_ABSTRACT_CLASS, addAbstractToClassFactory);
-
- factories.put(ABSTRACT_FUNCTION_WITH_BODY, removeAbstractModifierFactory);
- factories.put(ABSTRACT_FUNCTION_WITH_BODY, removeFunctionBodyFactory);
-
- factories.put(FINAL_PROPERTY_IN_TRAIT, removeFinalModifierFactory);
- factories.put(FINAL_FUNCTION_WITH_NO_BODY, removeFinalModifierFactory);
-
- JetSingleIntentionActionFactory addFunctionBodyFactory = AddFunctionBodyFix.createFactory();
- factories.put(NON_ABSTRACT_FUNCTION_WITH_NO_BODY, addAbstractModifierFactory);
- factories.put(NON_ABSTRACT_FUNCTION_WITH_NO_BODY, addFunctionBodyFactory);
-
- factories.put(NON_VARARG_SPREAD, RemovePsiElementSimpleFix.createRemoveSpreadFactory());
-
- factories.put(MIXING_NAMED_AND_POSITIONED_ARGUMENTS, AddNameToArgumentFix.createFactory());
-
- factories.put(NON_MEMBER_FUNCTION_NO_BODY, addFunctionBodyFactory);
-
- factories.put(NOTHING_TO_OVERRIDE, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OVERRIDE_KEYWORD));
- factories.put(NOTHING_TO_OVERRIDE, ChangeMemberFunctionSignatureFix.createFactory());
- factories.put(NOTHING_TO_OVERRIDE, AddFunctionToSupertypeFix.createFactory());
- factories.put(VIRTUAL_MEMBER_HIDDEN, AddModifierFix.createFactory(OVERRIDE_KEYWORD));
-
- factories.put(USELESS_CAST_STATIC_ASSERT_IS_FINE, ReplaceOperationInBinaryExpressionFix.createChangeCastToStaticAssertFactory());
- factories.put(USELESS_CAST, RemoveRightPartOfBinaryExpressionFix.createRemoveCastFactory());
-
- JetSingleIntentionActionFactory changeAccessorTypeFactory = ChangeAccessorTypeFix.createFactory();
- factories.put(WRONG_SETTER_PARAMETER_TYPE, changeAccessorTypeFactory);
- factories.put(WRONG_GETTER_RETURN_TYPE, changeAccessorTypeFactory);
-
- factories.put(USELESS_ELVIS, RemoveRightPartOfBinaryExpressionFix.createRemoveElvisOperatorFactory());
-
- JetSingleIntentionActionFactory removeRedundantModifierFactory = RemoveModifierFix.createRemoveModifierFactory(true);
- factories.put(REDUNDANT_MODIFIER, removeRedundantModifierFactory);
- factories.put(ABSTRACT_MODIFIER_IN_TRAIT, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ABSTRACT_KEYWORD, true));
- factories.put(OPEN_MODIFIER_IN_TRAIT, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD, true));
- factories.put(TRAIT_CAN_NOT_BE_FINAL, removeFinalModifierFactory);
- factories.put(REDUNDANT_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory(true));
- factories.put(INCOMPATIBLE_MODIFIERS, RemoveModifierFix.createRemoveModifierFactory(false));
- factories.put(VARIANCE_ON_TYPE_PARAMETER_OF_FUNCTION_OR_PROPERTY, RemoveModifierFix.createRemoveVarianceFactory());
-
- JetSingleIntentionActionFactory removeOpenModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD);
- factories.put(NON_FINAL_MEMBER_IN_FINAL_CLASS, AddModifierFix.createFactory(OPEN_KEYWORD, JetClass.class));
- factories.put(NON_FINAL_MEMBER_IN_FINAL_CLASS, removeOpenModifierFactory);
-
- JetSingleIntentionActionFactory removeModifierFactory = RemoveModifierFix.createRemoveModifierFactory();
- factories.put(GETTER_VISIBILITY_DIFFERS_FROM_PROPERTY_VISIBILITY, removeModifierFactory);
- factories.put(REDUNDANT_MODIFIER_IN_GETTER, removeRedundantModifierFactory);
- factories.put(ILLEGAL_MODIFIER, removeModifierFactory);
-
- JetSingleIntentionActionFactory changeToBackingFieldFactory = ChangeToBackingFieldFix.createFactory();
- factories.put(INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER, changeToBackingFieldFactory);
- factories.put(INITIALIZATION_USING_BACKING_FIELD_OPEN_SETTER, changeToBackingFieldFactory);
-
- JetSingleIntentionActionFactory changeToPropertyNameFactory = ChangeToPropertyNameFix.createFactory();
- factories.put(NO_BACKING_FIELD_ABSTRACT_PROPERTY, changeToPropertyNameFactory);
- factories.put(NO_BACKING_FIELD_CUSTOM_ACCESSORS, changeToPropertyNameFactory);
- factories.put(INACCESSIBLE_BACKING_FIELD, changeToPropertyNameFactory);
-
- JetSingleIntentionActionFactory unresolvedReferenceFactory = AutoImportFix.createFactory();
- factories.put(UNRESOLVED_REFERENCE, unresolvedReferenceFactory);
- factories.put(UNRESOLVED_REFERENCE_WRONG_RECEIVER, unresolvedReferenceFactory);
-
- JetSingleIntentionActionFactory removeImportFixFactory = RemovePsiElementSimpleFix.createRemoveImportFactory();
- factories.put(USELESS_SIMPLE_IMPORT, removeImportFixFactory);
- factories.put(USELESS_HIDDEN_IMPORT, removeImportFixFactory);
-
- factories.put(SUPERTYPE_NOT_INITIALIZED, ChangeToConstructorInvocationFix.createFactory());
- factories.put(FUNCTION_CALL_EXPECTED, ChangeToFunctionInvocationFix.createFactory());
-
- factories.put(CANNOT_CHANGE_ACCESS_PRIVILEGE, ChangeVisibilityModifierFix.createFactory());
- factories.put(CANNOT_WEAKEN_ACCESS_PRIVILEGE, ChangeVisibilityModifierFix.createFactory());
-
- factories.put(REDUNDANT_NULLABLE, RemoveNullableFix.createFactory(RemoveNullableFix.NullableKind.REDUNDANT));
- factories.put(NULLABLE_SUPERTYPE, RemoveNullableFix.createFactory(RemoveNullableFix.NullableKind.SUPERTYPE));
- factories.put(USELESS_NULLABLE_CHECK, RemoveNullableFix.createFactory(RemoveNullableFix.NullableKind.USELESS));
-
-
- ImplementMethodsHandler implementMethodsHandler = new ImplementMethodsHandler();
- actions.put(ABSTRACT_MEMBER_NOT_IMPLEMENTED, implementMethodsHandler);
- actions.put(MANY_IMPL_MEMBER_NOT_IMPLEMENTED, implementMethodsHandler);
-
- ChangeVariableMutabilityFix changeVariableMutabilityFix = new ChangeVariableMutabilityFix();
- actions.put(VAL_WITH_SETTER, changeVariableMutabilityFix);
- actions.put(VAL_REASSIGNMENT, changeVariableMutabilityFix);
- actions.put(VAR_OVERRIDDEN_BY_VAL, changeVariableMutabilityFix);
-
- RemoveValVarFromParametersFix removeValVarFromParametersFix = new RemoveValVarFromParametersFix();
- actions.put(VAL_OR_VAR_ON_FUN_PARAMETER, removeValVarFromParametersFix);
- actions.put(VAL_OR_VAR_ON_LOOP_PARAMETER, removeValVarFromParametersFix);
- actions.put(VAL_OR_VAR_ON_CATCH_PARAMETER, removeValVarFromParametersFix);
-
- factories.put(VIRTUAL_MEMBER_HIDDEN, AddOverrideToEqualsHashCodeToStringFix.createFactory());
-
- factories.put(UNUSED_VARIABLE, RemovePsiElementSimpleFix.createRemoveVariableFactory());
-
- actions.put(UNNECESSARY_SAFE_CALL, ReplaceCallFix.toDotCallFromSafeCall());
- actions.put(UNSAFE_CALL, ReplaceCallFix.toSafeCall());
-
- actions.put(UNSAFE_CALL, ExclExclCallFix.introduceExclExclCall());
- actions.put(UNNECESSARY_NOT_NULL_ASSERTION, ExclExclCallFix.removeExclExclCall());
- factories.put(UNSAFE_INFIX_CALL, ReplaceInfixCallFix.createFactory());
-
- JetSingleIntentionActionFactory removeProtectedModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(PROTECTED_KEYWORD);
- factories.put(PACKAGE_MEMBER_CANNOT_BE_PROTECTED, removeProtectedModifierFactory);
-
- actions.put(PUBLIC_MEMBER_SHOULD_SPECIFY_TYPE, new SpecifyTypeExplicitlyFix());
- actions.put(AMBIGUOUS_ANONYMOUS_TYPE_INFERRED, new SpecifyTypeExplicitlyFix());
-
- factories.put(ELSE_MISPLACED_IN_WHEN, MoveWhenElseBranchFix.createFactory());
- factories.put(NO_ELSE_IN_WHEN, AddWhenElseBranchFix.createFactory());
-
- factories.put(NO_TYPE_ARGUMENTS_ON_RHS, AddStarProjectionsFix.createFactoryForIsExpression());
- factories.put(WRONG_NUMBER_OF_TYPE_ARGUMENTS, AddStarProjectionsFix.createFactoryForJavaClass());
-
- factories.put(TYPE_ARGUMENTS_REDUNDANT_IN_SUPER_QUALIFIER, RemovePsiElementSimpleFix.createRemoveTypeArgumentsFactory());
-
- JetSingleIntentionActionFactory changeToStarProjectionFactory = ChangeToStarProjectionFix.createFactory();
- factories.put(UNCHECKED_CAST, changeToStarProjectionFactory);
- factories.put(CANNOT_CHECK_FOR_ERASED, changeToStarProjectionFactory);
-
- factories.put(INACCESSIBLE_OUTER_CLASS_EXPRESSION, AddModifierFix.createFactory(INNER_KEYWORD, JetClass.class));
-
- JetSingleIntentionActionFactory addOpenModifierToClassDeclarationFix = AddOpenModifierToClassDeclarationFix.createFactory();
- factories.put(FINAL_SUPERTYPE, addOpenModifierToClassDeclarationFix);
- factories.put(FINAL_UPPER_BOUND, addOpenModifierToClassDeclarationFix);
-
- factories.put(OVERRIDING_FINAL_MEMBER, MakeOverriddenMemberOpenFix.createFactory());
-
- factories.put(PARAMETER_NAME_CHANGED_ON_OVERRIDE, RenameParameterToMatchOverriddenMethodFix.createFactory());
-
- factories.put(OPEN_MODIFIER_IN_ENUM, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD));
- factories.put(ILLEGAL_ENUM_ANNOTATION, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ENUM_KEYWORD));
-
- factories.put(NESTED_CLASS_NOT_ALLOWED, AddModifierFix.createFactory(INNER_KEYWORD));
-
- factories.put(CONFLICTING_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory(false));
- factories.put(PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT, RemoveModifierFix.createRemoveProjectionFactory(false));
- factories.put(PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE, RemoveModifierFix.createRemoveProjectionFactory(false));
-
- factories.put(NOT_AN_ANNOTATION_CLASS, MakeClassAnAnnotationClassFix.createFactory());
-
- factories.put(DANGLING_FUNCTION_LITERAL_ARGUMENT_SUSPECTED, AddSemicolonAfterFunctionCallFix.createFactory());
-
- JetIntentionActionsFactory changeVariableTypeFix = ChangeVariableTypeFix.createFactoryForPropertyOrReturnTypeMismatchOnOverride();
- factories.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, changeVariableTypeFix);
- factories.put(PROPERTY_TYPE_MISMATCH_ON_OVERRIDE, changeVariableTypeFix);
- factories.put(COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH, ChangeVariableTypeFix.createFactoryForComponentFunctionReturnTypeMismatch());
-
- JetSingleIntentionActionFactory changeFunctionReturnTypeFix = ChangeFunctionReturnTypeFix.createFactoryForChangingReturnTypeToUnit();
- factories.put(RETURN_TYPE_MISMATCH, changeFunctionReturnTypeFix);
- factories.put(NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY, changeFunctionReturnTypeFix);
- factories.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, ChangeFunctionReturnTypeFix.createFactoryForReturnTypeMismatchOnOverride());
- factories.put(COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH, ChangeFunctionReturnTypeFix.createFactoryForComponentFunctionReturnTypeMismatch());
- factories.put(HAS_NEXT_FUNCTION_TYPE_MISMATCH, ChangeFunctionReturnTypeFix.createFactoryForHasNextFunctionTypeMismatch());
- factories.put(COMPARE_TO_TYPE_MISMATCH, ChangeFunctionReturnTypeFix.createFactoryForCompareToTypeMismatch());
-
- factories.put(TOO_MANY_ARGUMENTS, ChangeFunctionSignatureFix.createFactory());
- factories.put(NO_VALUE_FOR_PARAMETER, ChangeFunctionSignatureFix.createFactory());
- factories.put(UNUSED_PARAMETER, ChangeFunctionSignatureFix.createFactoryForUnusedParameter());
- factories.put(EXPECTED_PARAMETERS_NUMBER_MISMATCH, ChangeFunctionSignatureFix.createFactoryForParametersNumberMismatch());
-
- factories.put(EXPECTED_PARAMETER_TYPE_MISMATCH, ChangeTypeFix.createFactoryForExpectedParameterTypeMismatch());
- factories.put(EXPECTED_RETURN_TYPE_MISMATCH, ChangeTypeFix.createFactoryForExpectedReturnTypeMismatch());
-
- JetSingleIntentionActionFactory changeFunctionLiteralReturnTypeFix = ChangeFunctionLiteralReturnTypeFix.createFactoryForExpectedOrAssignmentTypeMismatch();
- factories.put(EXPECTED_TYPE_MISMATCH, changeFunctionLiteralReturnTypeFix);
- factories.put(ASSIGNMENT_TYPE_MISMATCH, changeFunctionLiteralReturnTypeFix);
-
- factories.put(TYPE_MISMATCH, new QuickFixFactoryForTypeMismatchError());
-
- factories.put(AUTOCAST_IMPOSSIBLE, CastExpressionFix.createFactoryForAutoCastImpossible());
-
- factories.put(PLATFORM_CLASS_MAPPED_TO_KOTLIN, MapPlatformClassToKotlinFix.createFactory());
-
- factories.put(MANY_CLASSES_IN_SUPERTYPE_LIST, RemoveSupertypeFix.createFactory());
-
- factories.put(NO_GET_METHOD, CreateFunctionFromUsageFix.OBJECT$.createCreateGetFunctionFromUsageFactory());
- factories.put(NO_SET_METHOD, CreateFunctionFromUsageFix.OBJECT$.createCreateSetFunctionFromUsageFactory());
- JetSingleIntentionActionFactory createHasNextFromUsageFactory = CreateFunctionFromUsageFix.OBJECT$.createCreateHasNextFunctionFromUsageFactory();
- factories.put(HAS_NEXT_MISSING, createHasNextFromUsageFactory);
- factories.put(HAS_NEXT_FUNCTION_NONE_APPLICABLE, createHasNextFromUsageFactory);
- JetSingleIntentionActionFactory createNextFromUsageFactory = CreateFunctionFromUsageFix.OBJECT$.createCreateNextFunctionFromUsageFactory();
- factories.put(NEXT_MISSING, createNextFromUsageFactory);
- factories.put(NEXT_NONE_APPLICABLE, createNextFromUsageFactory);
- factories.put(ITERATOR_MISSING, CreateFunctionFromUsageFix.OBJECT$.createCreateIteratorFunctionFromUsageFactory());
- factories.put(COMPONENT_FUNCTION_MISSING, CreateFunctionFromUsageFix.OBJECT$.createCreateComponentFunctionFromUsageFactory());
- }
-}
diff --git a/idea/src/org/jetbrains/jet/plugin/references/JetArrayAccessReference.java b/idea/src/org/jetbrains/jet/plugin/references/JetArrayAccessReference.java
index 429a3c907bc..78de2e5ac6e 100644
--- a/idea/src/org/jetbrains/jet/plugin/references/JetArrayAccessReference.java
+++ b/idea/src/org/jetbrains/jet/plugin/references/JetArrayAccessReference.java
@@ -21,17 +21,15 @@ import com.intellij.lang.ASTNode;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.MultiRangeReference;
import com.intellij.psi.PsiElement;
-import com.intellij.psi.util.PsiTreeUtil;
-import jet.runtime.typeinfo.JetValueParameter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
-import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.jet.lang.psi.JetArrayAccessExpression;
+import org.jetbrains.jet.lang.psi.JetContainerNode;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lexer.JetTokens;
-import org.jetbrains.jet.plugin.intentions.OperatorToFunctionIntention;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/idea/src/org/jetbrains/jet/plugin/references/JetInvokeFunctionReference.java b/idea/src/org/jetbrains/jet/plugin/references/JetInvokeFunctionReference.java
index e864e0ca226..ebb328b3008 100644
--- a/idea/src/org/jetbrains/jet/plugin/references/JetInvokeFunctionReference.java
+++ b/idea/src/org/jetbrains/jet/plugin/references/JetInvokeFunctionReference.java
@@ -20,8 +20,6 @@ import com.intellij.lang.ASTNode;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.MultiRangeReference;
import com.intellij.psi.PsiElement;
-import com.intellij.psi.util.PsiTreeUtil;
-import jet.runtime.typeinfo.JetValueParameter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
@@ -31,7 +29,6 @@ import org.jetbrains.jet.lang.resolve.calls.callUtil.CallUtilPackage;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.model.VariableAsFunctionResolvedCall;
import org.jetbrains.jet.lexer.JetTokens;
-import org.jetbrains.jet.plugin.intentions.OperatorToFunctionIntention;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetJUnitConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetJUnitConfigurationProducer.java
index 632482b4d44..de72ade4f6d 100644
--- a/idea/src/org/jetbrains/jet/plugin/run/JetJUnitConfigurationProducer.java
+++ b/idea/src/org/jetbrains/jet/plugin/run/JetJUnitConfigurationProducer.java
@@ -33,7 +33,7 @@ import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.asJava.LightClassUtil;
import org.jetbrains.jet.lang.psi.*;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
public class JetJUnitConfigurationProducer extends RuntimeConfigurationProducer {
private JetElement myElement;
@@ -51,7 +51,7 @@ public class JetJUnitConfigurationProducer extends RuntimeConfigurationProducer
protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, ConfigurationContext context) {
PsiElement leaf = location.getPsiElement();
- if (!JetPluginUtil.isInSource(leaf, true)) {
+ if (!ProjectRootsUtil.isInSource(leaf, true)) {
return null;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java
index 8f65a8420b9..32311983f6a 100644
--- a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java
+++ b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java
@@ -33,8 +33,8 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.name.FqName;
-import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.MainFunctionDetector;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeProvider;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
@@ -67,7 +67,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
}
JetFile file = getStartClassFile(location);
- if (file == null || !JetPluginUtil.isInSource(file, true)) {
+ if (file == null || !ProjectRootsUtil.isInSource(file, true)) {
return null;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java
index 06329f4c3e2..98d713b0213 100644
--- a/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java
+++ b/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java
@@ -34,7 +34,7 @@ import com.theoryinpractice.testng.util.TestNGUtil;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.asJava.LightClassUtil;
import org.jetbrains.jet.lang.psi.*;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer {
@Override
@@ -52,7 +52,7 @@ public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer
Project project = context.getProject();
PsiElement leaf = location.getPsiElement();
- if (!JetPluginUtil.isInSource(leaf, true)) {
+ if (!ProjectRootsUtil.isInSource(leaf, true)) {
return false;
}
diff --git a/idea/src/org/jetbrains/jet/plugin/search/ideaExtensions/KotlinReferencesSearcher.java b/idea/src/org/jetbrains/jet/plugin/search/ideaExtensions/KotlinReferencesSearcher.java
index bde2108f295..1f268887313 100644
--- a/idea/src/org/jetbrains/jet/plugin/search/ideaExtensions/KotlinReferencesSearcher.java
+++ b/idea/src/org/jetbrains/jet/plugin/search/ideaExtensions/KotlinReferencesSearcher.java
@@ -29,7 +29,8 @@ import org.jetbrains.jet.asJava.AsJavaPackage;
import org.jetbrains.jet.asJava.LightClassUtil;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightMethod;
-import org.jetbrains.jet.plugin.JetPluginUtil;
+import org.jetbrains.jet.plugin.ProjectRootsUtil;
+import org.jetbrains.jet.plugin.configuration.JetModuleTypeManager;
import org.jetbrains.jet.plugin.search.usagesSearch.*;
public class KotlinReferencesSearcher extends QueryExecutorBase {
@@ -58,7 +59,9 @@ public class KotlinReferencesSearcher extends QueryExecutorBase candidateClassNames = ImmutableList.of(
- kotlinPackageClassFqName,
- "kotlin.Unit",
- // For older versions
- "kotlin.namespace",
- "jet.Unit"
- );
-
- for (String className : candidateClassNames) {
- PsiClass psiClass = JavaPsiFacade.getInstance(scope.getProject()).findClass(className, scope);
- if (psiClass != null) {
- return psiClass;
- }
- }
- return null;
- }
-
public static void updateLibraries(
@NotNull final Project project,
@NotNull final Collection libraries
diff --git a/idea/tests/org/jetbrains/jet/plugin/JetLightCodeInsightFixtureTestCase.java b/idea/tests/org/jetbrains/jet/plugin/JetLightCodeInsightFixtureTestCase.java
index bfb0698042c..7198290e6eb 100644
--- a/idea/tests/org/jetbrains/jet/plugin/JetLightCodeInsightFixtureTestCase.java
+++ b/idea/tests/org/jetbrains/jet/plugin/JetLightCodeInsightFixtureTestCase.java
@@ -33,7 +33,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.InTextDirectivesUtils;
import org.jetbrains.jet.JetTestCaseBuilder;
import org.jetbrains.jet.lang.psi.JetFile;
-import org.jetbrains.jet.plugin.actions.internal.KotlinInternalModeToggleAction;
+import org.jetbrains.jet.plugin.actions.internal.KotlinInternalMode;
import org.jetbrains.jet.plugin.references.BuiltInsReferenceResolver;
import org.jetbrains.jet.utils.UtilsPackage;
@@ -51,13 +51,13 @@ public abstract class JetLightCodeInsightFixtureTestCase extends LightCodeInsigh
((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities();
VfsRootAccess.allowRootAccess(JetTestCaseBuilder.getHomeDirectory());
- kotlinInternalModeOriginalValue = KotlinInternalModeToggleAction.OBJECT$.getEnabled();
- KotlinInternalModeToggleAction.OBJECT$.setEnabled(true);
+ kotlinInternalModeOriginalValue = KotlinInternalMode.OBJECT$.getEnabled();
+ KotlinInternalMode.OBJECT$.setEnabled(true);
}
@Override
protected void tearDown() throws Exception {
- KotlinInternalModeToggleAction.OBJECT$.setEnabled(kotlinInternalModeOriginalValue);
+ KotlinInternalMode.OBJECT$.setEnabled(kotlinInternalModeOriginalValue);
VfsRootAccess.disallowRootAccess(JetTestCaseBuilder.getHomeDirectory());
Set builtInsSources = getProject().getComponent(BuiltInsReferenceResolver.class).getBuiltInsSources();