highlight static imports according to the color scheme selected (IDEA-133887)

This commit is contained in:
Anna Kozlova
2014-12-30 15:36:37 +01:00
parent dad0c70215
commit cda6746874
3 changed files with 22 additions and 7 deletions
@@ -159,10 +159,7 @@ public class HighlightNamesUtil {
@Nullable
public static HighlightInfo highlightClassNameInQualifier(final PsiJavaCodeReferenceElement element,
@NotNull TextAttributesScheme colorsScheme) {
PsiExpression qualifierExpression = null;
if (element instanceof PsiReferenceExpression) {
qualifierExpression = ((PsiReferenceExpression)element).getQualifierExpression();
}
PsiElement qualifierExpression = element.getQualifier();
if (qualifierExpression instanceof PsiJavaCodeReferenceElement) {
PsiElement resolved = ((PsiJavaCodeReferenceElement)qualifierExpression).resolve();
if (resolved instanceof PsiClass) {
@@ -647,12 +647,12 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
final String refName = ref.getReferenceName();
final JavaResolveResult[] results = ref.multiResolve(false);
final PsiElement referenceNameElement = ref.getReferenceNameElement();
if (results.length == 0) {
final String description = JavaErrorMessages.message("cannot.resolve.symbol", refName);
final PsiElement nameElement = ref.getReferenceNameElement();
assert nameElement != null : ref;
assert referenceNameElement != null : ref;
final HighlightInfo info =
HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(nameElement).descriptionAndTooltip(description).create();
HighlightInfo.newHighlightInfo(HighlightInfoType.WRONG_REF).range(referenceNameElement).descriptionAndTooltip(description).create();
QuickFixAction.registerQuickFixAction(info, QuickFixFactory.getInstance().createSetupJDKFix());
myHolder.add(info);
}
@@ -690,6 +690,22 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
}
}
}
if (!myHolder.hasErrorResults()) {
final PsiElement resolved = results.length == 1 ? results[0].getElement() : null;
final TextAttributesScheme colorsScheme = myHolder.getColorsScheme();
if (resolved instanceof PsiClass) {
myHolder.add(HighlightNamesUtil.highlightClassName((PsiClass)resolved, ref, colorsScheme));
}
else{
myHolder.add(HighlightNamesUtil.highlightClassNameInQualifier(ref, colorsScheme));
if (resolved instanceof PsiVariable) {
myHolder.add(HighlightNamesUtil.highlightVariableName((PsiVariable)resolved, referenceNameElement, colorsScheme));
}
else if (resolved instanceof PsiMethod) {
myHolder.add(HighlightNamesUtil.highlightMethodName((PsiMethod)resolved, referenceNameElement, false, colorsScheme));
}
}
}
}
@Override
@@ -1,4 +1,6 @@
import <symbolName descr="null" type="CLASS_NAME">java.io</symbolName>.*; // highlight on demand import as class name
import static <symbolName descr="null" type="CLASS_NAME">java.io.File</symbolName>.<symbolName descr="null" type="STATIC_FINAL_FIELD">pathSeparator</symbolName>;
import static <symbolName descr="null" type="CLASS_NAME">java.io.File</symbolName>.*;
class <symbolName descr="null" type="CLASS_NAME">a</symbolName> {
void <symbolName descr="null" type="METHOD_DECLARATION">method</symbolName>() {