method refs: captured wildcard at receiver position

EA-77434 - assert: PsiMethodReferenceCompatibilityConstraint.getParameterizedTypeSubstitutor
This commit is contained in:
Anna Kozlova
2016-01-04 17:28:00 +01:00
parent 82773c69e0
commit 88586f6ab9
3 changed files with 29 additions and 0 deletions

View File

@@ -269,6 +269,9 @@ public class PsiMethodReferenceCompatibilityConstraint implements ConstraintForm
}
}
}
else if (pType instanceof PsiCapturedWildcardType) {
pType = ((PsiCapturedWildcardType)pType).getUpperBound();
}
PsiClassType.ClassResolveResult resolveResult = PsiUtil.resolveGenericsClassInType(pType);
PsiClass paramClass = resolveResult.getElement();

View File

@@ -0,0 +1,22 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
class Test {
static <T> Map<T, Integer> combine(Collection<Map<? extends T, Integer>> pMaps) {
Function<Map<? extends T, Integer>, Set<? extends Map.Entry<? extends T, Integer>>> entrySet = Map::entrySet;
return pMaps.stream()
.map(entrySet)
.flatMap(Collection::stream)
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
(pEntry1, pEntry2) -> pEntry1 + pEntry2,
(Supplier<HashMap<T, Integer>>) HashMap::new
)
);
}
}

View File

@@ -486,6 +486,10 @@ public class NewMethodRefHighlightingTest extends LightDaemonAnalyzerTestCase {
doTest();
}
public void testCapturedWildcardInReceiverPosition() throws Exception {
doTest();
}
private void doTest() {
doTest(false);
}