From 426611035351ad4d917e6e21ffb7f7e12db2be09 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Thu, 3 Dec 2015 18:13:05 +0300 Subject: [PATCH] [groovy] pass GroovyMethodResult instances instead of bunch of arguments. --- .../processors/MethodResolverProcessor.java | 71 ++++++++----------- 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/MethodResolverProcessor.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/MethodResolverProcessor.java index 82f5b7e012ab..dac59b075ba5 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/MethodResolverProcessor.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/MethodResolverProcessor.java @@ -33,7 +33,6 @@ import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil; import org.jetbrains.plugins.groovy.lang.resolve.GrMethodComparator; import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil; -import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -168,35 +167,26 @@ public class MethodResolverProcessor extends ResolverProcessor array = getCandidatesInternal(); + List array = getCandidatesInternal(); if (array.size() == 1) return array.toArray(new GroovyResolveResult[array.size()]); - List result = new ArrayList(); + List result = ContainerUtil.newArrayList(); - Iterator itr = array.iterator(); + Iterator itr = array.iterator(); result.add(itr.next()); Outer: while (itr.hasNext()) { - GroovyResolveResult resolveResult = itr.next(); - PsiElement currentElement = resolveResult.getElement(); - if (currentElement instanceof PsiMethod) { - PsiMethod currentMethod = (PsiMethod) currentElement; - for (Iterator iterator = result.iterator(); iterator.hasNext();) { - final GroovyResolveResult otherResolveResult = iterator.next(); - PsiElement other = otherResolveResult.getElement(); - if (other instanceof PsiMethod) { - PsiMethod otherMethod = (PsiMethod) other; - int res = compareMethods(currentMethod, resolveResult.getSubstitutor(), resolveResult.getCurrentFileResolveContext(), - otherMethod, otherResolveResult.getSubstitutor(), otherResolveResult.getCurrentFileResolveContext()); - if (res > 0) { - continue Outer; - } - else if (res < 0) { - iterator.remove(); - } - } + GroovyMethodResult resolveResult = itr.next(); + for (Iterator iterator = result.iterator(); iterator.hasNext(); ) { + final GroovyMethodResult otherResolveResult = iterator.next(); + int res = compareMethods(resolveResult, otherResolveResult); + if (res > 0) { + continue Outer; + } + else if (res < 0) { + iterator.remove(); } } @@ -212,23 +202,21 @@ public class MethodResolverProcessor extends ResolverProcessor