merge completion variants with same method erasures

This commit is contained in:
anna
2013-10-23 13:43:41 +02:00
parent 9084fdd4fe
commit 1d08cd4400
4 changed files with 54 additions and 4 deletions
@@ -30,10 +30,9 @@ import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.scope.BaseScopeProcessor;
import com.intellij.psi.scope.ElementClassHint;
import com.intellij.psi.scope.JavaScopeProcessorEvent;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.psi.util.*;
import gnu.trove.THashSet;
import gnu.trove.TObjectHashingStrategy;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -50,7 +49,23 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
private boolean myStatic = false;
private PsiElement myDeclarationHolder = null;
private final Set<Object> myResultNames = new THashSet<Object>();
private final Set<Object> myResultNames = new THashSet<Object>(new TObjectHashingStrategy<Object>() {
@Override
public int computeHashCode(Object object) {
if (object instanceof MethodSignature) {
return MethodSignatureUtil.METHOD_PARAMETERS_ERASURE_EQUALITY.computeHashCode((MethodSignature)object);
}
return object.hashCode();
}
@Override
public boolean equals(Object o1, Object o2) {
if (o1 instanceof MethodSignature && o2 instanceof MethodSignature) {
return MethodSignatureUtil.METHOD_PARAMETERS_ERASURE_EQUALITY.equals((MethodSignature)o1, (MethodSignature)o2);
}
return o1.equals(o2);
}
});
private final List<CompletionElement> myResults = new ArrayList<CompletionElement>();
private final List<CompletionElement> myFilteredResults = new ArrayList<CompletionElement>();
private final PsiElement myElement;
@@ -0,0 +1,15 @@
import java.util.*;
abstract class GenericPanelControl {
protected abstract void _performAction(List<?> rowVector);
}
class WorkflowPanelControl extends GenericPanelControl {
protected void _performAction(List rowVector) {
}
}
class WorkflowSubPanelControl extends WorkflowPanelControl {
protected void _performAction(List rowVector) {
super._<caret>
}
}
@@ -0,0 +1,15 @@
import java.util.*;
abstract class GenericPanelControl {
protected abstract void _performAction(List<?> rowVector);
}
class WorkflowPanelControl extends GenericPanelControl {
protected void _performAction(List rowVector) {
}
}
class WorkflowSubPanelControl extends WorkflowPanelControl {
protected void _performAction(List rowVector) {
super._performAction();
}
}
@@ -323,6 +323,11 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase {
checkResultByFile("MethodWithLeftParTailType2_after.java");
}
public void testSuperErasure() throws Exception {
configureByFile("SuperErasure.java");
checkResultByFile("SuperErasure_after.java");
}
public void testMethodWithLeftParTailTypeNoPairBrace() throws Exception {
final boolean old = CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET;
CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET = false;