From d1602ce473d0d78060e073d870e61b144bdda2ec Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 25 Feb 2013 14:40:53 +0100 Subject: [PATCH] SOE --- .../impl/source/resolve/PsiResolveHelperImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java index 5c5aa513970b..6f0b5c6a4ec4 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiResolveHelperImpl.java @@ -1202,12 +1202,22 @@ public class PsiResolveHelperImpl implements PsiResolveHelper { final PsiExpression elseExpression = ((PsiConditionalExpression)parent).getElseExpression(); final PsiType[] paramTypes = {((PsiMethod)typeParameter.getOwner()).getReturnType()}; if (methodCall.equals(PsiUtil.skipParenthesizedExprDown(elseExpression)) && thenExpression != null) { - final PsiType thenType = thenExpression.getType(); + final PsiType thenType = ourGraphGuard.doPreventingRecursion(thenExpression, true, new Computable() { + @Override + public PsiType compute() { + return thenExpression.getType(); + } + }); if (thenType != null) { pair = inferTypeForMethodTypeParameterInner(typeParameter, paramTypes, new PsiType[] {thenType}, substitutor, null, policy); } } else if (methodCall.equals(PsiUtil.skipParenthesizedExprDown(thenExpression)) && elseExpression != null) { - final PsiType elseType = elseExpression.getType(); + final PsiType elseType = ourGraphGuard.doPreventingRecursion(elseExpression, true, new Computable() { + @Override + public PsiType compute() { + return elseExpression.getType(); + } + }); if (elseType != null) { pair = inferTypeForMethodTypeParameterInner(typeParameter, paramTypes, new PsiType[] {elseType}, substitutor, null, policy); }