assertion for misbehaving import optimizer

This commit is contained in:
Alexey Kudravtsev
2010-11-23 18:49:25 +03:00
parent 9577a3c949
commit dec5afbfd5
2 changed files with 18 additions and 14 deletions
@@ -49,6 +49,7 @@ import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
@@ -172,29 +173,32 @@ public class PostHighlightingPass extends TextEditorHighlightingPass {
private void optimizeImportsOnTheFly(@NotNull final Editor editor) {
if (myHasRedundantImports || myHasMissortedImports) {
invokeOnTheFlyImportOptimizer(new Runnable() {
public void run() {
if (myProject.isDisposed() || editor.isDisposed()) {
return;
}
OptimizeImportsFix optimizeImportsFix = new OptimizeImportsFix();
if (optimizeImportsFix.isAvailable(myProject, editor, myFile) && myFile.isWritable()) {
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
final OptimizeImportsFix optimizeImportsFix = new OptimizeImportsFix();
if (optimizeImportsFix.isAvailable(myProject, editor, myFile) && myFile.isWritable()) {
invokeOnTheFlyImportOptimizer(new Runnable() {
public void run() {
optimizeImportsFix.invoke(myProject, editor, myFile);
}
}
});
}, myFile, editor);
}
}
}
public static void invokeOnTheFlyImportOptimizer(final Runnable runnable) {
public static void invokeOnTheFlyImportOptimizer(@NotNull final Runnable runnable, @NotNull final PsiFile file, @NotNull final Editor editor) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
public void run() {
if (file.getProject().isDisposed() || editor.isDisposed()) return;
PsiDocumentManager.getInstance(file.getProject()).commitAllDocuments();
String beforeText = file.getText();
CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() {
public void run() {
ApplicationManager.getApplication().runWriteAction(runnable);
}
});
String afterText = file.getText();
if (Comparing.strEqual(beforeText, afterText)) {
LOG.error("Import optimizer for the '"+file.getVirtualFile().getPath()+"' hasn't optimized any imports. Text:\n"+afterText);
}
}
});
}
@@ -34,7 +34,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
@@ -54,6 +53,7 @@ import java.util.Set;
*/
public class GroovyUnusedImportPass extends TextEditorHighlightingPass {
private final GroovyFile myFile;
private final Editor myEditor;
public static final Logger LOG = Logger.getInstance("org.jetbrains.plugins.groovy.codeInspection.local.GroovyUnusedImportsPass");
private volatile Set<GrImportStatement> myUnusedImports = Collections.emptySet();
private volatile Runnable myOptimizeRunnable;
@@ -61,6 +61,7 @@ public class GroovyUnusedImportPass extends TextEditorHighlightingPass {
public GroovyUnusedImportPass(GroovyFile file, Editor editor) {
super(file.getProject(), editor.getDocument(), true);
myFile = file;
myEditor = editor;
}
public void doCollectInformation(ProgressIndicator progress) {
@@ -124,10 +125,9 @@ public class GroovyUnusedImportPass extends TextEditorHighlightingPass {
PostHighlightingPass.invokeOnTheFlyImportOptimizer(new Runnable() {
@Override
public void run() {
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
optimize.run();
}
});
},myFile,myEditor);
}
}