From 58a610baa64d72136d4a104c0adfde5d3ef03e37 Mon Sep 17 00:00:00 2001 From: Dmitri Boulytchev Date: Mon, 28 Feb 2005 19:05:52 +0300 Subject: [PATCH] Recursive constraints handled --- .../typeCook/deductive/resolver/ResolverTree.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/com/intellij/refactoring/typeCook/deductive/resolver/ResolverTree.java b/source/com/intellij/refactoring/typeCook/deductive/resolver/ResolverTree.java index d196c0d356b8..3515003d7717 100644 --- a/source/com/intellij/refactoring/typeCook/deductive/resolver/ResolverTree.java +++ b/source/com/intellij/refactoring/typeCook/deductive/resolver/ResolverTree.java @@ -561,6 +561,15 @@ public class ResolverTree { final PsiType right = constr.getRight(); if (!(left instanceof PsiTypeVariable) && right instanceof PsiTypeVariable) { + final HashSet bound = new PsiTypeVarCollector().getSet(left); + + if (bound.contains(right)){ + myConstraints.remove(constr); + mySons = new ResolverTree[]{applyRule(myBindingFactory.create(((PsiTypeVariable)right), Bottom.BOTTOM))}; + + return; + } + final PsiManager manager = PsiManager.getInstance(myProject); final PsiType leftType = left instanceof PsiWildcardType ? ((PsiWildcardType)left).getBound() : left; final PsiType[] types = getTypeRange(PsiType.getJavaLangObject(manager, GlobalSearchScope.allScope(myProject)), leftType);