diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java
index 00339413c87f..5c276d0cd9cd 100644
--- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java
+++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java
@@ -2107,7 +2107,18 @@ public class HighlightUtil {
if (highlightInfo != null) return highlightInfo;
PsiElement refParent = ref.getParent();
- if (refParent instanceof PsiMethodCallExpression) {
+ PsiElement granny;
+ if (refParent instanceof PsiReferenceExpression && (granny = refParent.getParent()) instanceof PsiMethodCallExpression) {
+ PsiReferenceExpression referenceToMethod = ((PsiMethodCallExpression)granny).getMethodExpression();
+ PsiExpression qualifierExpression = referenceToMethod.getQualifierExpression();
+ if (qualifierExpression == ref) {
+ PsiElement qualifier = resolved;
+ if (qualifier != null && !(qualifier instanceof PsiClass) && !(qualifier instanceof PsiVariable)) {
+ return HighlightInfo.createHighlightInfo(HighlightInfoType.WRONG_REF, qualifierExpression, "Qualifier must be an expression");
+ }
+ }
+ }
+ else if (refParent instanceof PsiMethodCallExpression) {
return null; // methods checked elsewhere
}
if (resolved == null) {
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/MethodCalls.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/MethodCalls.java
index c6fc37d77092..74175a7a882c 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/MethodCalls.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/MethodCalls.java
@@ -94,6 +94,10 @@ class DCC {
DCC(1);
new DCC(1);
}
+ {
+ java.toString();
+ }
+
}
class ThisExpression {