notify wolf when there are javac errors from ant run; do not ignore files excluded from compilation (IDEA-127317)

This commit is contained in:
Anna Kozlova
2014-07-28 20:56:34 -07:00
parent 53f2858577
commit 49661279e0
4 changed files with 22 additions and 1 deletions
@@ -40,6 +40,7 @@ public abstract class WolfTheProblemSolver {
public abstract boolean isProblemFile(VirtualFile virtualFile);
public abstract void weHaveGotProblems(@NotNull VirtualFile virtualFile, @NotNull List<Problem> problems);
public abstract void weHaveGotNonIgnorableProblems(@NotNull VirtualFile virtualFile, @NotNull List<Problem> problems);
public abstract void clearProblems(@NotNull VirtualFile virtualFile);
public abstract boolean hasProblemFilesBeneath(@NotNull Condition<VirtualFile> condition);
@@ -43,6 +43,11 @@ public class MockWolfTheProblemSolver extends WolfTheProblemSolver {
if (myDelegate != null) myDelegate.weHaveGotProblems(virtualFile, problems);
}
@Override
public void weHaveGotNonIgnorableProblems(@NotNull VirtualFile virtualFile, @NotNull List<Problem> problems) {
if (myDelegate != null) myDelegate.weHaveGotNonIgnorableProblems(virtualFile, problems);
}
@Override
public boolean hasProblemFilesBeneath(@NotNull final Condition<VirtualFile> condition) {
return false;
@@ -413,6 +413,12 @@ public class WolfTheProblemSolverImpl extends WolfTheProblemSolver {
public void weHaveGotProblems(@NotNull final VirtualFile virtualFile, @NotNull List<Problem> problems) {
if (problems.isEmpty()) return;
if (!isToBeHighlighted(virtualFile)) return;
weHaveGotNonIgnorableProblems(virtualFile, problems);
}
@Override
public void weHaveGotNonIgnorableProblems(@NotNull VirtualFile virtualFile, @NotNull List<Problem> problems) {
if (problems.isEmpty()) return;
boolean fireListener = false;
synchronized (myProblems) {
ProblemFileInfo storedProblems = myProblems.get(virtualFile);
@@ -25,6 +25,8 @@ import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.problems.Problem;
import com.intellij.problems.WolfTheProblemSolver;
import com.intellij.rt.ant.execution.IdeaAntLogger2;
import com.intellij.util.text.StringTokenizer;
import org.jetbrains.annotations.NonNls;
@@ -32,6 +34,7 @@ import org.jetbrains.annotations.Nullable;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class OutputParser{
@@ -193,7 +196,7 @@ public class OutputParser{
return -1;
}
private static void processJavacMessages(final List<String> javacMessages, final AntBuildMessageView messageView, Project project) {
private static void processJavacMessages(final List<String> javacMessages, final AntBuildMessageView messageView, final Project project) {
if (javacMessages == null) {
return;
}
@@ -241,6 +244,12 @@ public class OutputParser{
public void run() {
VirtualFile file = url == null ? null : VirtualFileManager.getInstance().findFileByUrl(url);
messageView.outputJavacMessage(convertCategory(category), strings, file, url, lineNum, columnNum);
if (file != null && category == CompilerMessageCategory.ERROR) {
final WolfTheProblemSolver wolf = WolfTheProblemSolver.getInstance(project);
final Problem problem = wolf.convertToProblem(file, lineNum, columnNum, strings);
wolf.weHaveGotNonIgnorableProblems(file, Collections.singletonList(problem));
}
}
});
}