diff --git a/java/java-impl/src/com/intellij/refactoring/turnRefsToSuper/TurnRefsToSuperProcessorBase.java b/java/java-impl/src/com/intellij/refactoring/turnRefsToSuper/TurnRefsToSuperProcessorBase.java index 45b0b1ad5d1e..53c1b70bcf1a 100644 --- a/java/java-impl/src/com/intellij/refactoring/turnRefsToSuper/TurnRefsToSuperProcessorBase.java +++ b/java/java-impl/src/com/intellij/refactoring/turnRefsToSuper/TurnRefsToSuperProcessorBase.java @@ -451,7 +451,6 @@ public abstract class TurnRefsToSuperProcessorBase extends BaseRefactoringProces else if (declScope instanceof PsiForeachStatement) { final PsiExpression iteratedValue = ((PsiForeachStatement)declScope).getIteratedValue(); addLink(type, iteratedValue); - addLink(iteratedValue, type); } else if (declScope instanceof PsiMethod) { final PsiMethod method = (PsiMethod)declScope; diff --git a/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/after/Test.java b/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/after/Test.java new file mode 100644 index 000000000000..744218413617 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/after/Test.java @@ -0,0 +1,3 @@ +public class Test { + public void m() {} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/after/TestSubclass.java b/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/after/TestSubclass.java new file mode 100644 index 000000000000..840eeb4f9868 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/after/TestSubclass.java @@ -0,0 +1,18 @@ +import java.util.List; + +class TestSubclass extends Test { +} + + +class Base { + public void main(List tests) { + for (Test test : tests) {} + } +} + +class Inheritor extends Base { + @Override + public void main(List tests) { + super.main(tests); + } +} diff --git a/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/before/Test.java b/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/before/Test.java new file mode 100644 index 000000000000..a490e06c18c7 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractSuperClass/emptyForeach/before/Test.java @@ -0,0 +1,19 @@ +import java.util.List; + +class Test { + public void m() {} +} + + +class Base { + public void main(List tests) { + for (Test test : tests) {} + } +} + +class Inheritor extends Base { + @Override + public void main(List tests) { + super.main(tests); + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java index 47754632a760..732ead78deb1 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java @@ -56,6 +56,11 @@ public class ExtractSuperClassTest extends RefactoringTestCase { doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class)); } + + public void testEmptyForeach() throws Exception { + doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class)); + } + public void testConflictUsingPrivateMethod() throws Exception { doTest("Test", "TestSubclass", new String[] {"Method Test.foo() is private and will not be accessible from method x()."},