inline super: append implements cases to extends list of type parameter (IDEA-149230)

This commit is contained in:
Anna Kozlova
2015-12-28 10:27:00 +01:00
parent 930bbc66e2
commit b9b85cca9d
6 changed files with 16 additions and 2 deletions
@@ -47,7 +47,7 @@ public class SafeDeleteExtendsClassUsageInfo extends SafeDeleteReferenceUsageInf
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(refClass.getProject()).getElementFactory();
final PsiReferenceList extendsList = refClass.getExtendsList();
final PsiReferenceList extendingImplementsList = myExtendingClass.getImplementsList();
final PsiReferenceList extendingImplementsList = myExtendingClass instanceof PsiTypeParameter ? myExtendingClass.getExtendsList() : myExtendingClass.getImplementsList();
if (extendsList != null) {
final PsiClassType[] referenceTypes = extendsList.getReferencedTypes();
final PsiReferenceList listToAddExtends = refClass.isInterface() == myExtendingClass.isInterface() || myExtendingClass instanceof PsiTypeParameter ? myExtendingClass.getExtendsList() : extendingImplementsList;
@@ -0,0 +1,2 @@
interface Int<T> {
}
@@ -0,0 +1,4 @@
abstract class Test implements Runnable {
<T extends Runnable> void m() {
}
}
@@ -0,0 +1,4 @@
interface Int<T> {
}
abstract class Super implements Runnable {
}
@@ -0,0 +1,4 @@
abstract class Test extends Super {
<T extends Super> void m() {
}
}
@@ -16,7 +16,6 @@
package com.intellij.refactoring;
import com.intellij.JavaTestUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.refactoring.inlineSuperClass.InlineSuperClassRefactoringProcessor;
@@ -70,6 +69,7 @@ public class InlineSuperClassTest extends MultiFileTestCase {
public void testMultipleSubclassesInheritsOneBaseBase() { doTestMultipleSubclasses(); }
public void testInlineSuperclassExtendsList() { doTest(); }
public void testInterfaceHierarchyWithSubstitution() { doTest(); }
public void testTypeParameterBound() { doTest();}
private void doTest() {
doTest(false, false);