mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
method reference constraints (IDEA-123223)
This commit is contained in:
@@ -17,7 +17,6 @@ package com.intellij.psi.impl.source.resolve.graphInference.constraints;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiImplUtil;
|
||||
import com.intellij.psi.impl.source.resolve.graphInference.FunctionalInterfaceParameterizationUtil;
|
||||
import com.intellij.psi.impl.source.resolve.graphInference.InferenceSession;
|
||||
import com.intellij.psi.impl.source.resolve.graphInference.PsiPolyExpressionUtil;
|
||||
@@ -27,7 +26,8 @@ import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
@@ -58,10 +58,7 @@ public class PsiMethodReferenceCompatibilityConstraint implements ConstraintForm
|
||||
final PsiSubstitutor substitutor = LambdaUtil.getSubstitutor(interfaceMethod, classResolveResult);
|
||||
final PsiParameter[] targetParameters = interfaceMethod.getParameterList().getParameters();
|
||||
final PsiType interfaceMethodReturnType = interfaceMethod.getReturnType();
|
||||
PsiType returnType = substitutor.substitute(interfaceMethodReturnType);
|
||||
if (myExpression.getTypeParameters().length == 0 && returnType != null) {
|
||||
returnType = PsiImplUtil.normalizeWildcardTypeByPosition(returnType, myExpression);
|
||||
}
|
||||
final PsiType returnType = substitutor.substitute(interfaceMethodReturnType);
|
||||
final PsiType[] typeParameters = myExpression.getTypeParameters();
|
||||
if (!myExpression.isExact()) {
|
||||
for (PsiParameter parameter : targetParameters) {
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
class FluTr<K> {
|
||||
|
||||
class Group {
|
||||
List<Authority> getAuthorities() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class Authority {
|
||||
String getPermission() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void filterForPermission(final String permission) {
|
||||
transformAndConcat(Group::getAuthorities)
|
||||
.transform(Authority::getPermission)
|
||||
.contains(permission);
|
||||
}
|
||||
|
||||
boolean contains(String f) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public final <T> FluTr<T> transform(Function<? super K,T> function) { return null; }
|
||||
public <T> FluTr<T> transformAndConcat(Function<? super Group,? extends Iterable<? extends T>> function) { return null; }
|
||||
|
||||
}
|
||||
@@ -217,6 +217,10 @@ public class NewMethodRefHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testIDEA123223() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
doTest(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user