diff --git a/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java b/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java index 1f5a669a5ff..da964464410 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java +++ b/idea/src/org/jetbrains/jet/plugin/util/JetPsiMatcher.java @@ -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 PARAMETER_TYPE_CHECKER = new Predicate2() { + @Override + public boolean apply(JetParameter param1, JetParameter param2) { + return checkElementMatch(param1.getTypeReference(), param2.getTypeReference()); + } + }; + private static boolean checkListMatch(List list1, List list2, Predicate2 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