Merge remote-tracking branch 'origin/master'
authorRoman Shevchenko <roman.shevchenko@jetbrains.com>
Tue, 23 Aug 2016 12:27:05 +0000 (15:27 +0300)
committerRoman Shevchenko <roman.shevchenko@jetbrains.com>
Tue, 23 Aug 2016 12:27:05 +0000 (15:27 +0300)
1  2 
java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightVisitorImpl.java

index f6e1df5d12a0e4a4f6a8afb35b245aba71422970,59d7ac4958db3d26748656bf3253d12cd9929160..d95ce00d89b92f9dea37b876e90630b86fd7350a
@@@ -53,7 -53,10 +53,10 @@@ import gnu.trove.TObjectIntHashMap
  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));
      }
    }
  
      if (!myHolder.hasErrorResults()) myHolder.add(checkFeature(module, Feature.MODULES));
      if (!myHolder.hasErrorResults()) myHolder.add(ModuleHighlightUtil.checkFileName(module, myFile));
      if (!myHolder.hasErrorResults()) myHolder.add(ModuleHighlightUtil.checkFileDuplicates(module, myFile));
 +    if (!myHolder.hasErrorResults()) myHolder.addAll(ModuleHighlightUtil.checkDuplicateRequires(module));
      if (!myHolder.hasErrorResults()) myHolder.add(ModuleHighlightUtil.checkFileLocation(module, myFile));
    }