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"));