From 007fd699c555680e5b4aeb51fe433c78e99b653c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 25 May 2015 16:49:17 +0200 Subject: [PATCH] inference: ensure thread local is cleared after calculation --- .../intellij/psi/infos/MethodCandidateInfo.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java b/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java index 99229718aca5..f13054cd1190 100644 --- a/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java +++ b/java/java-psi-api/src/com/intellij/psi/infos/MethodCandidateInfo.java @@ -157,16 +157,17 @@ public class MethodCandidateInfo extends CandidateInfo{ map = ContainerUtil.createConcurrentWeakMap(); CURRENT_CANDIDATE.set(map); } - final CurrentCandidateProperties alreadyThere = map.put(getMarkerList(), + final PsiElement argumentList = getMarkerList(); + final CurrentCandidateProperties alreadyThere = map.put(argumentList, new CurrentCandidateProperties(this, substitutor, isVarargs(), true)); try { return computable.compute(); } finally { if (alreadyThere == null) { - map.remove(getMarkerList()); + map.remove(argumentList); } else { - map.put(getMarkerList(), alreadyThere); + map.put(argumentList, alreadyThere); } } } @@ -286,8 +287,9 @@ public class MethodCandidateInfo extends CandidateInfo{ CURRENT_CANDIDATE.set(map); } final PsiMethod method = getElement(); - final CurrentCandidateProperties alreadyThere = - map.put(getMarkerList(), new CurrentCandidateProperties(this, super.getSubstitutor(), policy.isVarargsIgnored() || isVarargs(), !includeReturnConstraint)); + final PsiElement argumentList = getMarkerList(); + final CurrentCandidateProperties alreadyThere = + map.put(argumentList, new CurrentCandidateProperties(this, super.getSubstitutor(), policy.isVarargsIgnored() || isVarargs(), !includeReturnConstraint)); try { PsiTypeParameter[] typeParameters = method.getTypeParameters(); @@ -309,9 +311,9 @@ public class MethodCandidateInfo extends CandidateInfo{ } finally { if (alreadyThere == null) { - map.remove(getMarkerList()); + map.remove(argumentList); } else { - map.put(getMarkerList(), alreadyThere); + map.put(argumentList, alreadyThere); } } }