diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java index cdb811d45e3b..219cf3f41161 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSession.java @@ -145,6 +145,12 @@ public class InferenceSession { if (psiClass instanceof PsiTypeParameter && ((PsiTypeParameter)psiClass).getOwner() == method) return false; } } + + for (PsiExpression expression : LambdaUtil.getReturnExpressions((PsiLambdaExpression)expr)) { + if (PsiPolyExpressionUtil.isPolyExpression(expression)) { + return false; + } + } } return true; } diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java index 105643d0b196..baaba043ec8e 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/SubtypingConstraint.java @@ -50,7 +50,7 @@ public class SubtypingConstraint implements ConstraintFormula { return true; } if (PsiType.NULL.equals(myS)) return true; - inferenceVariable = session.getInferenceVariable(myT); + inferenceVariable = session.getInferenceVariable(myT, false); if (inferenceVariable != null) { inferenceVariable.addBound(myS, InferenceBound.LOWER); return true;