diff --git a/platform/analysis-api/src/com/intellij/problems/WolfTheProblemSolver.java b/platform/analysis-api/src/com/intellij/problems/WolfTheProblemSolver.java index c4580e082fb4..cc72d479daec 100644 --- a/platform/analysis-api/src/com/intellij/problems/WolfTheProblemSolver.java +++ b/platform/analysis-api/src/com/intellij/problems/WolfTheProblemSolver.java @@ -40,6 +40,7 @@ public abstract class WolfTheProblemSolver { public abstract boolean isProblemFile(VirtualFile virtualFile); public abstract void weHaveGotProblems(@NotNull VirtualFile virtualFile, @NotNull List problems); + public abstract void weHaveGotNonIgnorableProblems(@NotNull VirtualFile virtualFile, @NotNull List problems); public abstract void clearProblems(@NotNull VirtualFile virtualFile); public abstract boolean hasProblemFilesBeneath(@NotNull Condition condition); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/problems/MockWolfTheProblemSolver.java b/platform/lang-impl/src/com/intellij/codeInsight/problems/MockWolfTheProblemSolver.java index eeb5e04b8aab..4ea365f34b0c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/problems/MockWolfTheProblemSolver.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/problems/MockWolfTheProblemSolver.java @@ -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 problems) { + if (myDelegate != null) myDelegate.weHaveGotNonIgnorableProblems(virtualFile, problems); + } + @Override public boolean hasProblemFilesBeneath(@NotNull final Condition condition) { return false; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/problems/WolfTheProblemSolverImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/problems/WolfTheProblemSolverImpl.java index 45b4532713c4..fab185e6ddc0 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/problems/WolfTheProblemSolverImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/problems/WolfTheProblemSolverImpl.java @@ -413,6 +413,12 @@ public class WolfTheProblemSolverImpl extends WolfTheProblemSolver { public void weHaveGotProblems(@NotNull final VirtualFile virtualFile, @NotNull List problems) { if (problems.isEmpty()) return; if (!isToBeHighlighted(virtualFile)) return; + weHaveGotNonIgnorableProblems(virtualFile, problems); + } + + @Override + public void weHaveGotNonIgnorableProblems(@NotNull VirtualFile virtualFile, @NotNull List problems) { + if (problems.isEmpty()) return; boolean fireListener = false; synchronized (myProblems) { ProblemFileInfo storedProblems = myProblems.get(virtualFile); diff --git a/plugins/ant/src/com/intellij/lang/ant/config/execution/OutputParser.java b/plugins/ant/src/com/intellij/lang/ant/config/execution/OutputParser.java index 6f2fb8549eb8..3af6d25c5c82 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/execution/OutputParser.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/execution/OutputParser.java @@ -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 javacMessages, final AntBuildMessageView messageView, Project project) { + private static void processJavacMessages(final List 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)); + } } }); }