import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import java.util.*;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
public class HighlightVisitorImpl extends JavaElementVisitor implements HighlightVisitor {
@NotNull
private void highlightReferencedMethodOrClassName(@NotNull PsiJavaCodeReferenceElement element, PsiElement resolved) {
PsiElement parent = element.getParent();
- if (parent instanceof PsiReferenceExpression || parent instanceof PsiJavaCodeReferenceElement) {
- return;
- }
final TextAttributesScheme colorsScheme = myHolder.getColorsScheme();
if (parent instanceof PsiMethodCallExpression) {
PsiMethod method = ((PsiMethodCallExpression)parent).resolveMethod();
final PsiElement referenceNameElement = element.getReferenceNameElement();
if(referenceNameElement != null) {
// exclude type parameters from the highlighted text range
- TextRange range = new TextRange(element.getTextRange().getStartOffset(), referenceNameElement.getTextRange().getEndOffset());
+ TextRange range = referenceNameElement.getTextRange();
myHolder.add(HighlightNamesUtil.highlightMethodName(methodOrClass, referenceNameElement, range, colorsScheme, false));
}
}
}
catch (IndexNotReadyException ignored) { }
}
- else if (parent instanceof PsiImportStatement && ((PsiImportStatement)parent).isOnDemand()) {
- // highlight on demand import as class
- myHolder.add(HighlightNamesUtil.highlightClassName(null, element, colorsScheme));
+ else if (resolved instanceof PsiPackage) {
+ // highlight package (and following dot) as a class
+ myHolder.add(HighlightNamesUtil.highlightPackage(resolved, element, colorsScheme));
}
else if (resolved instanceof PsiClass) {
- final PsiElement qualifier = element.getQualifier();
- boolean highlightByItem = qualifier instanceof PsiJavaCodeReferenceElement && ((PsiJavaCodeReferenceElement)qualifier).getTypeParameters().length > 0 ||
- PsiTreeUtil.findChildOfType(element, PsiComment.class) != null;
- final PsiElement referenceNameElement = element.getReferenceNameElement();
- final List<PsiElement> toHighlight = new ArrayList<>();
- if (highlightByItem && referenceNameElement != null) {
- toHighlight.add(referenceNameElement);
- toHighlight.addAll(PsiTreeUtil.findChildrenOfType(element, PsiJavaCodeReferenceElement.class));
- }
- else {
- toHighlight.add(element);
- }
- for (PsiElement psiElement : toHighlight) {
- myHolder.add(HighlightNamesUtil.highlightClassName((PsiClass)resolved, psiElement, colorsScheme));
- }
+ myHolder.add(HighlightNamesUtil.highlightClassName((PsiClass)resolved, element, colorsScheme));
}
}