From cb586c3554d13f2708dd7138bd1a8fc61cd7132c Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Tue, 14 Jun 2016 16:22:21 +0300 Subject: [PATCH] [groovy] do not resolve synthetic inner classes from within current class definition --- .../plugins/groovy/lang/psi/util/GrClassImplUtil.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrClassImplUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrClassImplUtil.java index 2e72c287af98..a4f3c7ba8207 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrClassImplUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrClassImplUtil.java @@ -17,10 +17,10 @@ package org.jetbrains.plugins.groovy.lang.psi.util; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.RecursionManager; +import com.intellij.openapi.util.Trinity; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.impl.PsiClassImplUtil; @@ -418,9 +418,11 @@ public class GrClassImplUtil { return Arrays.asList(grType.getCodeInnerClasses()); } - List classes = RecursionManager.doPreventingRecursion(grType, false, () -> { + boolean includeSynthetic = !PsiTreeUtil.isContextAncestor(grType, place, true); + Object key = Trinity.create(grType, lastParent, place); + List classes = RecursionManager.doPreventingRecursion(key, false, () -> { List result = new ArrayList(); - for (CandidateInfo info : CollectClassMembersUtil.getAllInnerClasses(grType, true).values()) { + for (CandidateInfo info : CollectClassMembersUtil.getAllInnerClasses(grType, includeSynthetic).values()) { final PsiClass inner = (PsiClass)info.getElement(); final PsiClass containingClass = inner.getContainingClass(); assert containingClass != null;