From 1e48abe57873d52f44a051c735fb4b70ec10c82a Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 16 May 2014 14:26:55 +0400 Subject: [PATCH] good code red: nested classes inheritance --- .../impl/analysis/GenericsHighlightUtil.java | 4 +++- .../genericsHighlighting/IDEA55510.java | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java index 59024a8d89c2..c388cb9b9a10 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java @@ -1258,7 +1258,9 @@ public class GenericsHighlightUtil { final PsiElement superClass = referenceElement.resolve(); if (superClass instanceof PsiClass) { final PsiClass superContainingClass = ((PsiClass)superClass).getContainingClass(); - if (superContainingClass != null && InheritanceUtil.isInheritorOrSelf(containingClass, superContainingClass, true)) { + if (superContainingClass != null && + InheritanceUtil.isInheritorOrSelf(containingClass, superContainingClass, true) && + !PsiTreeUtil.isAncestor(superContainingClass, containingClass, true)) { return true; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA55510.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA55510.java index cda2e457bbe9..5776db03ae4b 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA55510.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA55510.java @@ -19,4 +19,18 @@ class AbstractSettings { interface SomeInterface {} class Settings extends AbstractSettings implements SomeInterface { static class MyState implements State {} -} \ No newline at end of file +} + +//-------------------------------------------- +class Records { + interface RecordCategory { + } + + static abstract class Record extends Records {} + + static class ResultRecord extends Record { + public enum Category implements RecordCategory { + kind(); + } + } +}