Fix functional type matching
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.jet.plugin.util;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
|
||||
@@ -62,6 +61,13 @@ public class JetPsiMatcher {
|
||||
}
|
||||
};
|
||||
|
||||
private static final Predicate2<JetParameter, JetParameter> PARAMETER_TYPE_CHECKER = new Predicate2<JetParameter, JetParameter>() {
|
||||
@Override
|
||||
public boolean apply(JetParameter param1, JetParameter param2) {
|
||||
return checkElementMatch(param1.getTypeReference(), param2.getTypeReference());
|
||||
}
|
||||
};
|
||||
|
||||
private static <T> boolean checkListMatch(List<? extends T> list1, List<? extends T> list2, Predicate2<T, T> checker) {
|
||||
int n = list1.size();
|
||||
if (list2.size() != n) return false;
|
||||
@@ -205,7 +211,9 @@ public class JetPsiMatcher {
|
||||
public Boolean visitFunctionType(JetFunctionType type1, JetElement data) {
|
||||
JetFunctionType type2 = (JetFunctionType) data;
|
||||
|
||||
return checkListMatch(type1.getTypeArgumentsAsTypes(), type2.getTypeArgumentsAsTypes());
|
||||
return checkElementMatch(type1.getReceiverTypeRef(), type2.getReceiverTypeRef()) &&
|
||||
checkElementMatch(type1.getReturnTypeRef(), type2.getReturnTypeRef()) &&
|
||||
checkListMatch(type1.getParameters(), type2.getParameters(), PARAMETER_TYPE_CHECKER);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user