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); }