From 5f1745a7d0c88ac4e0b2b59a81bfb8e062a8ecf3 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 31 May 2013 14:23:33 +0400 Subject: [PATCH] EA-46646 - IOE: LightElement.add --- .../safeDelete/usageInfo/SafeDeleteExtendsClassUsageInfo.java | 2 +- .../refactoring/safeDelete/InterfaceAsTypeParameterBound.java | 3 +++ .../safeDelete/InterfaceAsTypeParameterBound_after.java | 3 +++ .../testSrc/com/intellij/refactoring/SafeDeleteTest.java | 4 ++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound.java create mode 100644 java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteExtendsClassUsageInfo.java b/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteExtendsClassUsageInfo.java index 6d7f6c586875..4b586aa979b1 100644 --- a/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteExtendsClassUsageInfo.java +++ b/java/java-impl/src/com/intellij/refactoring/safeDelete/usageInfo/SafeDeleteExtendsClassUsageInfo.java @@ -50,7 +50,7 @@ public class SafeDeleteExtendsClassUsageInfo extends SafeDeleteReferenceUsageInf final PsiReferenceList extendingImplementsList = myExtendingClass.getImplementsList(); if (extendsList != null) { final PsiClassType[] referenceTypes = extendsList.getReferencedTypes(); - final PsiReferenceList listToAddExtends = refClass.isInterface() == myExtendingClass.isInterface() ? myExtendingClass.getExtendsList() : extendingImplementsList; + final PsiReferenceList listToAddExtends = refClass.isInterface() == myExtendingClass.isInterface() || myExtendingClass instanceof PsiTypeParameter ? myExtendingClass.getExtendsList() : extendingImplementsList; final PsiClassType[] existingRefTypes = listToAddExtends.getReferencedTypes(); for (PsiClassType referenceType : referenceTypes) { if (ArrayUtilRt.find(existingRefTypes, referenceType) > -1) continue; diff --git a/java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound.java b/java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound.java new file mode 100644 index 000000000000..855ed150ccb1 --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound.java @@ -0,0 +1,3 @@ +interface Foo1 {} +interface FooToDelete extends Foo1 {} +class TypeParamOwner {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound_after.java b/java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound_after.java new file mode 100644 index 000000000000..c0c81b0afeca --- /dev/null +++ b/java/java-tests/testData/refactoring/safeDelete/InterfaceAsTypeParameterBound_after.java @@ -0,0 +1,3 @@ +interface Foo1 {} + +class TypeParamOwner {} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java b/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java index 44f927fa87ba..0cf3fc3dfcaa 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/SafeDeleteTest.java @@ -127,6 +127,10 @@ public class SafeDeleteTest extends MultiFileTestCase { doTest("Super"); } + public void testInterfaceAsTypeParameterBound() throws Exception { + doSingleFileTest(); + } + public void testLocalVariableSideEffect() throws Exception { myDoCompare = false; try {