names highlighting: don't highlight typed reference as class name (IDEA-65270)

This commit is contained in:
Anna Kozlova
2016-08-15 20:17:11 +03:00
parent c975603207
commit 8a0c63df61
2 changed files with 21 additions and 1 deletions
@@ -851,7 +851,21 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
myHolder.add(HighlightNamesUtil.highlightClassName(null, element, colorsScheme));
}
else if (resolved instanceof PsiClass) {
myHolder.add(HighlightNamesUtil.highlightClassName((PsiClass)resolved, element, colorsScheme));
final PsiElement qualifier = element.getQualifier();
boolean hasNameHighlighting = qualifier instanceof PsiJavaCodeReferenceElement &&
((PsiJavaCodeReferenceElement)qualifier).getTypeParameters().length > 0;
final PsiElement referenceNameElement = element.getReferenceNameElement();
final List<PsiElement> toHighlight = new ArrayList<>();
if (hasNameHighlighting && 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));
}
}
}
@@ -94,4 +94,10 @@ class <symbolName descr="null" type="CLASS_NAME">InheritedSymbolNames</symbolNam
return "classC";
}
}
}
class <symbolName descr="null" type="CLASS_NAME">Node</symbolName><<symbolName descr="null" type="TYPE_PARAMETER_NAME">E</symbolName>> {
public class <symbolName descr="null" type="CLASS_NAME">Details</symbolName> {}
<symbolName descr="null" type="CLASS_NAME">Node</symbolName><? extends <symbolName descr="null" type="CLASS_NAME">String</symbolName>>.<symbolName descr="null" type="CLASS_NAME">Details</symbolName> <symbolName descr="null" type="INSTANCE_FIELD">details</symbolName>;
}