diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java index e7499783944c..d734719ad376 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -325,6 +325,7 @@ public class RefactoringUtil { public static boolean isExpressionAnchorElement(PsiElement element) { + if (element instanceof PsiDeclarationStatement && element.getParent() instanceof PsiForStatement) return false; return element instanceof PsiStatement || element instanceof PsiClassInitializer || element instanceof PsiField || element instanceof PsiMethod; } diff --git a/java/java-tests/testData/refactoring/introduceVariable/FromForInitializer.after.java b/java/java-tests/testData/refactoring/introduceVariable/FromForInitializer.after.java new file mode 100644 index 000000000000..0a5fc11aaca6 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/FromForInitializer.after.java @@ -0,0 +1,13 @@ +import java.util.*; + +public class SomeClass { + + static List foo(){return null;} + + public static void main(String[] args) { + final List list = foo(); + for (Iterator it = list.listIterator(list.size()); it.hasNext(); ) { + + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceVariable/FromForInitializer.java b/java/java-tests/testData/refactoring/introduceVariable/FromForInitializer.java new file mode 100644 index 000000000000..1b5587cb1aae --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/FromForInitializer.java @@ -0,0 +1,12 @@ +import java.util.*; + +public class SomeClass { + + static List foo(){return null;} + + public static void main(String[] args) { + for (Iterator it = foo().listIterator(foo().size()); it.hasNext(); ) { + + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableTest.java index d5b62cc792a5..40ea43b6d187 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceVariableTest.java @@ -273,6 +273,10 @@ public class IntroduceVariableTest extends LightCodeInsightTestCase { public void testCantCollapsedToDiamond() throws Exception { doTest(new MockIntroduceVariableHandler("a", true, true, true, "Foo")); } + + public void testFromForInitializer() throws Exception { + doTest(new MockIntroduceVariableHandler("list", true, true, true, "java.util.List")); + } public void testPolyadic() throws Exception { doTest(new MockIntroduceVariableHandler("b1", true, true, true, "boolean"));