private boolean reportProblems( CompileContext context, Map<ProblemDescriptor, HighlightDisplayLevel> problemsMap) { if (problemsMap.isEmpty()) { return false; } boolean errorsReported = false; for (Map.Entry<ProblemDescriptor, HighlightDisplayLevel> entry : problemsMap.entrySet()) { ProblemDescriptor problemDescriptor = entry.getKey(); final PsiElement element = problemDescriptor.getPsiElement(); final PsiFile psiFile = element.getContainingFile(); if (psiFile == null) continue; final VirtualFile virtualFile = psiFile.getVirtualFile(); if (virtualFile == null) continue; final CompilerMessageCategory category = myValidator.getCategoryByHighlightDisplayLevel(entry.getValue(), virtualFile, context); final Document document = myPsiDocumentManager.getDocument(psiFile); final int offset = problemDescriptor.getStartElement().getTextOffset(); assert document != null; final int line = document.getLineNumber(offset); final int column = offset - document.getLineStartOffset(line); context.addMessage( category, problemDescriptor.getDescriptionTemplate(), virtualFile.getUrl(), line + 1, column + 1); if (CompilerMessageCategory.ERROR == category) { errorsReported = true; } } return errorsReported; }