From 5998dfed1f3ff3aa3d7e01d8c65d433e94f6785e Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 28 Nov 2017 16:55:36 +0100 Subject: [PATCH] inference: cache only results with default policy completion results should not be cached even if called after resolved conflicts --- .../resolve/graphInference/InferenceSessionContainer.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSessionContainer.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSessionContainer.java index daa9d59acdbe..6de7a5c59347 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSessionContainer.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceSessionContainer.java @@ -17,6 +17,7 @@ package com.intellij.psi.impl.source.resolve.graphInference; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; +import com.intellij.psi.impl.source.resolve.DefaultParameterTypeInferencePolicy; import com.intellij.psi.impl.source.resolve.ParameterTypeInferencePolicy; import com.intellij.psi.impl.source.resolve.graphInference.constraints.ExpressionCompatibilityConstraint; import com.intellij.psi.infos.MethodCandidateInfo; @@ -84,13 +85,14 @@ public class InferenceSessionContainer { if (topLevelCall != null) { InferenceSession session; - if (MethodCandidateInfo.isOverloadCheck() || !PsiDiamondType.ourDiamondGuard.currentStack().isEmpty() || LambdaUtil.isLambdaParameterCheck()) { + if (MethodCandidateInfo.isOverloadCheck() || !PsiDiamondType.ourDiamondGuard.currentStack().isEmpty() || + LambdaUtil.isLambdaParameterCheck() || !policy.equals(DefaultParameterTypeInferencePolicy.INSTANCE)) { session = startTopLevelInference(topLevelCall, policy); } else { session = CachedValuesManager.getCachedValue(topLevelCall, () -> new CachedValueProvider.Result<>( - startTopLevelInference(topLevelCall, policy), + startTopLevelInference(topLevelCall, DefaultParameterTypeInferencePolicy.INSTANCE), PsiModificationTracker.MODIFICATION_COUNT)); if (session != null) {