From 44e359d268f509b016a2b6dc23794e3fc2b42c6a Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 24 Apr 2013 17:00:15 +0200 Subject: [PATCH] IDEA-106119 (more rigorous check for "this" qualifier) --- .../codeInsight/daemon/impl/analysis/HighlightUtil.java | 6 +++--- .../advHighlighting/QualifiedThisSuper.java | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) 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 7151855d7a4d..2098dd6bacaf 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 @@ -1357,9 +1357,9 @@ public class HighlightUtil extends HighlightUtilBase { } } - final PsiClass aClass; + PsiClass aClass; if (qualifier != null) { - final PsiElement resolved = qualifier.resolve(); + PsiElement resolved = qualifier.advancedResolve(true).getElement(); if (resolved != null && !(resolved instanceof PsiClass)) { String description = JavaErrorMessages.message("class.expected"); return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(qualifier).descriptionAndTooltip(description).create(); @@ -1393,7 +1393,7 @@ public class HighlightUtil extends HighlightUtilBase { } return null; } - + private static boolean isInsideDefaultMethod(PsiMethod method, PsiClass aClass) { while (method != null && method.getContainingClass() != aClass) { method = PsiTreeUtil.getParentOfType(method, PsiMethod.class, true); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/QualifiedThisSuper.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/QualifiedThisSuper.java index cba08cdf3f99..76336cd0090a 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/QualifiedThisSuper.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/QualifiedThisSuper.java @@ -15,3 +15,10 @@ class R { System.out.println(Z.super.toString()); } } + +class W { + static String some = ""; + static void m() { + synchronized (some.this) { } + } +}