java inference: ensure that applicability check is not re-entered

this fixes assertion
	at com.intellij.util.ObjectUtils.assertNotNull(ObjectUtils.java:84)
	at com.intellij.psi.infos.MethodCandidateInfo.inferTypeArguments(MethodCandidateInfo.java:453)
caused by including expression compatibility constraints for expressions inside lambdas for which parameter types are calculated

GitOrigin-RevId: 0588bff4a719fb73ff49a51bc86635e56cd8d146
This commit is contained in:
Anna Kozlova
2019-09-05 22:08:27 +03:00
committed by intellij-monorepo-bot
parent 6e6d49014c
commit d829a7c8f4
4 changed files with 55 additions and 2 deletions

View File

@@ -0,0 +1,39 @@
import java.util.Map;
import java.util.concurrent.ConcurrentMap;
import java.util.function.Function;
import java.util.function.Supplier;
class AsyncContext {
public static <T> T computeOnEdt(Supplier<T> supplier) {
return null;
}
public static <K, V> ConcurrentMap<K, V> create(Function<? super K, ? extends V> computeValue,
Supplier<? extends ConcurrentMap<K, V>> mapCreator) {
return null;
}
private static final Provider provider = null;
private final Map<Component, Provider> myProviders = create(key->
computeOnEdt(() -> {
return dataKey -> {
return computeOnEdt(() -> {
return provider.get<caret>Data(dataKey);
});
};
}),
AsyncContext::createConcurrentWeakKeySoftValueMap
);
public static <K,V> ConcurrentMap<K,V> createConcurrentWeakKeySoftValueMap() {
return null;
}
}
abstract class Component {}
interface Provider {
Object getData(String key);
}