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() { 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 @NotNull
@Override @Override
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) { public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
@@ -16,36 +16,15 @@
package org.jetbrains.jet.analyzer; package org.jetbrains.jet.analyzer;
import com.google.common.base.Predicate;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; 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.jet.lang.resolve.lazy.ResolveSession;
import java.util.Collection; import java.util.Collection;
public interface AnalyzerFacade { 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 @NotNull
ResolveSession getLazyResolveSession( ResolveSession getLazyResolveSession(
@NotNull Project project, @NotNull Project project,
@@ -16,16 +16,10 @@
package org.jetbrains.jet.plugin.project; package org.jetbrains.jet.plugin.project;
import com.google.common.base.Predicate;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.analyzer.AnalyzerFacade; 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.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.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.k2js.analyze.AnalyzerFacadeForJS; import org.jetbrains.k2js.analyze.AnalyzerFacadeForJS;
@@ -38,28 +32,6 @@ public enum JSAnalyzerFacadeForIDEA implements AnalyzerFacade {
private JSAnalyzerFacadeForIDEA() { 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 @NotNull
@Override @Override
public ResolveSession getLazyResolveSession(@NotNull Project project, @NotNull Collection<JetFile> files) { 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 com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.diagnostics.Errors;
import org.jetbrains.jet.lang.psi.JetFile; 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.lang.psi.JetTypeReference;
import org.jetbrains.jet.lexer.JetModifierKeywordToken; import org.jetbrains.jet.lexer.JetModifierKeywordToken;
import org.jetbrains.jet.plugin.JetBundle; import org.jetbrains.jet.plugin.JetBundle;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.project.PluginJetFilesProvider; import org.jetbrains.jet.plugin.project.PluginJetFilesProvider;
import java.util.Collection; 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 { protected void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file); 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()) { PsiElement element = diagnostic.getPsiElement();
if (diagnostic.getFactory() != Errors.VIRTUAL_MEMBER_HIDDEN) continue; if (!isEqualsHashCodeOrToString(element)) continue;
PsiElement element = diagnostic.getPsiElement(); element.replace(AddModifierFix.addModifier(element, OVERRIDE_KEYWORD, MODIFIERS_TO_REPLACE, project, false));
if (!isEqualsHashCodeOrToString(element)) continue; }
element.replace(AddModifierFix.addModifier(element, OVERRIDE_KEYWORD, MODIFIERS_TO_REPLACE, project, false));
} }
} }
@@ -16,7 +16,6 @@
package org.jetbrains.jet.plugin.quickfix; package org.jetbrains.jet.plugin.quickfix;
import com.google.common.base.Predicates;
import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
@@ -24,15 +23,12 @@ import com.intellij.psi.PsiFile;
import com.intellij.util.IncorrectOperationException; import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext; 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.JetBundle;
import org.jetbrains.jet.plugin.project.AnalyzerFacadeProvider; import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.project.PluginJetFilesProvider; import org.jetbrains.jet.plugin.project.PluginJetFilesProvider;
import java.util.Collection; 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 { public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file); Collection<JetFile> files = PluginJetFilesProvider.allFilesInProject(file);
AnalyzeExhaust analyzeExhaust = analyzeFiles(file, files);
for (JetFile jetFile : 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()) { for (JetDeclaration declaration : file.getDeclarations()) {
declaration.acceptChildren(new JetVisitorVoid() { 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());
}
} }