diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java b/idea/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java index ee20d944baf..f1647237d1e 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/DebugInfoAnnotator.java @@ -20,7 +20,6 @@ import com.intellij.lang.annotation.AnnotationHolder; import com.intellij.lang.annotation.Annotator; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.progress.ProcessCanceledException; -import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.checkers.DebugInfoUtil; @@ -40,13 +39,10 @@ public class DebugInfoAnnotator implements Annotator { @Override public void annotate(@NotNull PsiElement element, @NotNull final AnnotationHolder holder) { - if (!isDebugInfoEnabled() || !JetPsiChecker.isErrorReportingEnabled()) { + if (!isDebugInfoEnabled() || !JetPsiChecker.isErrorReportingEnabled() || !JetPsiChecker.isInSourceContent(element)) { return; } - if (!ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInContent(element.getContainingFile().getVirtualFile())) { - return; - } - + if (element instanceof JetFile) { JetFile file = (JetFile) element; try { diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java index 21b4a2a6729..ef4ce3ded11 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetPsiChecker.java @@ -28,8 +28,10 @@ import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.MultiRangeReference; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.xml.util.XmlStringUtil; import org.jetbrains.annotations.NotNull; @@ -100,18 +102,21 @@ public class JetPsiChecker implements Annotator { @Override public void annotate(@NotNull PsiElement element, @NotNull AnnotationHolder holder) { + if (!isInSourceContent(element)) { + return; + } + for (HighlightingVisitor visitor : getBeforeAnalysisVisitors(holder)) { element.accept(visitor); } if (element instanceof JetFile) { - JetFile file = (JetFile)element; + JetFile file = (JetFile) element; try { BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile(file).getBindingContext(); - boolean isInContent = ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInContent(file.getVirtualFile()); - if (errorReportingEnabled && isInContent) { + if (errorReportingEnabled) { Collection diagnostics = Sets.newLinkedHashSet(bindingContext.getDiagnostics()); Set redeclarations = Sets.newHashSet(); for (Diagnostic diagnostic : diagnostics) { @@ -270,4 +275,16 @@ public class JetPsiChecker implements Annotator { annotation.setTooltip(getMessage(redeclarationDiagnostic)); return annotation; } + + static boolean isInSourceContent(PsiElement element) { + PsiFile containingFile = element.getContainingFile(); + if (containingFile == null) { + return false; + } + VirtualFile virtualFile = containingFile.getVirtualFile(); + if (virtualFile == null) { + return false; + } + return ProjectFileIndex.SERVICE.getInstance(element.getProject()).isInSourceContent(virtualFile); + } }