PY-22734 Don't capture local variable in the lambda used as a cached value provider

Otherwise, we re-compute the function's result type using a stale type
comment.
This commit is contained in:
Mikhail Golubev
2017-04-17 14:13:22 +03:00
parent a3ac0e0532
commit 86d84f6f65
@@ -23,10 +23,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Ref;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiPolyVariantReference;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.QualifiedName;
import com.intellij.psi.util.*;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashMap;
import com.intellij.util.containers.HashSet;
@@ -285,7 +282,7 @@ public class PyTypingTypeProvider extends PyTypeProviderBase {
return null;
}
final PyFunctionTypeAnnotationFile file = CachedValuesManager.getCachedValue(function, () ->
CachedValueProvider.Result.create(new PyFunctionTypeAnnotationFile(comment, function), function));
CachedValueProvider.Result.create(new PyFunctionTypeAnnotationFile(function.getTypeCommentAnnotation(), function), function));
return file.getAnnotation();
}