Eager methods removed from AnalyzerFacade

This commit is contained in:
Andrey Breslav
2014-04-22 16:04:10 +04:00
parent d45347688d
commit 45a90a8f20
5 changed files with 12 additions and 108 deletions
@@ -59,30 +59,6 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
private AnalyzerFacadeForJVM() {
}
@Override
@NotNull
public AnalyzeExhaust analyzeFiles(
@NotNull Project project,
@NotNull Collection<JetFile> files,
@NotNull Predicate<PsiFile> filesToAnalyzeCompletely
) {
return analyzeFilesWithJavaIntegration(project, files, filesToAnalyzeCompletely, true);
}
@NotNull
@Override
public AnalyzeExhaust analyzeBodiesInFiles(
@NotNull Project project,
@NotNull Predicate<PsiFile> filesForBodiesResolve,
@NotNull BindingTrace headersTraceContext,
@NotNull BodiesResolveContext bodiesResolveContext,
@NotNull ModuleDescriptor module
) {
return AnalyzerFacadeForEverything.analyzeBodiesInFilesWithJavaIntegration(
project, filesForBodiesResolve,
headersTraceContext, bodiesResolveContext, module);
}
@NotNull
@Override
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
@@ -16,36 +16,15 @@
package org.jetbrains.jet.analyzer;
import com.google.common.base.Predicate;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import java.util.Collection;
public interface AnalyzerFacade {
@NotNull
AnalyzeExhaust analyzeFiles(
@NotNull Project project,
@NotNull Collection<JetFile> files,
@NotNull Predicate<PsiFile> filesToAnalyzeCompletely
);
@NotNull
AnalyzeExhaust analyzeBodiesInFiles(
@NotNull Project project,
@NotNull Predicate<PsiFile> filesForBodiesResolve,
@NotNull BindingTrace traceContext,
@NotNull BodiesResolveContext bodiesResolveContext,
@NotNull ModuleDescriptor module
);
@NotNull
ResolveSession getLazyResolveSession(
@NotNull Project project,
@@ -16,16 +16,10 @@
package org.jetbrains.jet.plugin.project;
import com.google.common.base.Predicate;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.analyzer.AnalyzerFacade;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.k2js.analyze.AnalyzerFacadeForJS;
@@ -38,28 +32,6 @@ public enum JSAnalyzerFacadeForIDEA implements AnalyzerFacade {
private JSAnalyzerFacadeForIDEA() {
}
@NotNull
@Override
public AnalyzeExhaust analyzeFiles(
@NotNull Project project,
@NotNull Collection<JetFile> files,
@NotNull Predicate<PsiFile> filesToAnalyzeCompletely
) {
return AnalyzerFacadeForJS.analyzeFiles(files, filesToAnalyzeCompletely, new IDEAConfig(project), true);
}
@NotNull
@Override
public AnalyzeExhaust analyzeBodiesInFiles(
@NotNull Project project,
@NotNull Predicate<PsiFile> filesForBodiesResolve,
@NotNull BindingTrace traceContext,
@NotNull BodiesResolveContext bodiesResolveContext,
@NotNull ModuleDescriptor module
) {
return AnalyzerFacadeForJS.analyzeBodiesInFiles(filesForBodiesResolve, new IDEAConfig(project), traceContext, bodiesResolveContext, module);
}
@NotNull
@Override
public ResolveSession getLazyResolveSession(@NotNull Project project, @NotNull Collection<JetFile> files) {
@@ -23,7 +23,6 @@ import com.intellij.psi.PsiFile;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.Errors;
import org.jetbrains.jet.lang.psi.JetFile;
@@ -32,6 +31,7 @@ import org.jetbrains.jet.lang.psi.JetParameter;
import org.jetbrains.jet.lang.psi.JetTypeReference;
import org.jetbrains.jet.lexer.JetModifierKeywordToken;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.project.PluginJetFilesProvider;
import java.util.Collection;
@@ -86,15 +86,15 @@ public class AddOverrideToEqualsHashCodeToStringFix extends JetIntentionAction<P
protected void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file);
AnalyzeExhaust analyzeExhaust = MigrateSureInProjectFix.analyzeFiles(file, files);
for (JetFile jetFile : files) {
for (Diagnostic diagnostic : ResolvePackage.getAnalysisResults(jetFile).getBindingContext().getDiagnostics()) {
if (diagnostic.getFactory() != Errors.VIRTUAL_MEMBER_HIDDEN) continue;
for (Diagnostic diagnostic : analyzeExhaust.getBindingContext().getDiagnostics()) {
if (diagnostic.getFactory() != Errors.VIRTUAL_MEMBER_HIDDEN) continue;
PsiElement element = diagnostic.getPsiElement();
if (!isEqualsHashCodeOrToString(element)) continue;
PsiElement element = diagnostic.getPsiElement();
if (!isEqualsHashCodeOrToString(element)) continue;
element.replace(AddModifierFix.addModifier(element, OVERRIDE_KEYWORD, MODIFIERS_TO_REPLACE, project, false));
element.replace(AddModifierFix.addModifier(element, OVERRIDE_KEYWORD, MODIFIERS_TO_REPLACE, project, false));
}
}
}
@@ -16,7 +16,6 @@
package org.jetbrains.jet.plugin.quickfix;
import com.google.common.base.Predicates;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
@@ -24,15 +23,12 @@ import com.intellij.psi.PsiFile;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace;
import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeProvider;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.project.PluginJetFilesProvider;
import java.util.Collection;
@@ -92,14 +88,13 @@ public class MigrateSureInProjectFix extends JetIntentionAction<PsiElement> {
public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file);
AnalyzeExhaust analyzeExhaust = analyzeFiles(file, files);
for (JetFile jetFile : files) {
replaceUnresolvedSure(jetFile, analyzeExhaust.getBindingContext());
replaceUnresolvedSure(jetFile);
}
}
private void replaceUnresolvedSure(JetFile file, final BindingContext context) {
private void replaceUnresolvedSure(JetFile file) {
final BindingContext context = ResolvePackage.getBindingContext(file);
for (JetDeclaration declaration : file.getDeclarations()) {
declaration.acceptChildren(new JetVisitorVoid() {
@@ -142,22 +137,4 @@ public class MigrateSureInProjectFix extends JetIntentionAction<PsiElement> {
}
};
}
/* package */ static AnalyzeExhaust analyzeFiles(JetFile initialFile, Collection<JetFile> files) {
AnalyzeExhaust analyzeExhaustHeaders = AnalyzerFacadeProvider.getAnalyzerFacadeForFile(initialFile).analyzeFiles(
initialFile.getProject(),
files,
Predicates.<PsiFile>alwaysFalse());
BodiesResolveContext context = analyzeExhaustHeaders.getBodiesResolveContext();
assert context != null : "Headers resolver should prepare and stored information for bodies resolve";
// Need to resolve bodies in given file and all in the same package
return AnalyzerFacadeProvider.getAnalyzerFacadeForFile(initialFile).analyzeBodiesInFiles(
initialFile.getProject(),
Predicates.<PsiFile>alwaysTrue(),
new DelegatingBindingTrace(analyzeExhaustHeaders.getBindingContext(), "trace in migrate sure fix"),
context,
analyzeExhaustHeaders.getModuleDescriptor());
}
}