From 4b271bdb3d646cc173f343ec6f82e9eb26004fdb Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 3 Feb 2010 15:49:29 +0300 Subject: [PATCH] make static: move field initialization to constructors if it depends on introduced fields --- .../makeStatic/MakeClassStaticProcessor.java | 40 +++++++++++++++++++ .../FieldInitializerMoveToConstructor.java | 13 ++++++ ...eldInitializerMoveToConstructor_after.java | 23 +++++++++++ .../refactoring/MakeClassStaticTest.java | 2 + 4 files changed, 78 insertions(+) create mode 100644 java/java-tests/testData/refactoring/makeClassStatic/FieldInitializerMoveToConstructor.java create mode 100644 java/java-tests/testData/refactoring/makeClassStatic/FieldInitializerMoveToConstructor_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java index 08802c0d681b..9f674cae0bf2 100644 --- a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java @@ -109,6 +109,18 @@ public class MakeClassStaticProcessor extends MakeMethodOrClassStaticProcessor

YoYoYo { + Object x = y; + Object[] xx = {y}; + void foo (){ + YoYo yoYoy = YoYo.this; + Object t = y; + Object t1 = yoYoy.y; + } + } +} + diff --git a/java/java-tests/testData/refactoring/makeClassStatic/FieldInitializerMoveToConstructor_after.java b/java/java-tests/testData/refactoring/makeClassStatic/FieldInitializerMoveToConstructor_after.java new file mode 100644 index 000000000000..964a4e0d69f1 --- /dev/null +++ b/java/java-tests/testData/refactoring/makeClassStatic/FieldInitializerMoveToConstructor_after.java @@ -0,0 +1,23 @@ +public class YoYo { + Object y; + static class YoYoYo { + Object x; + Object[] xx; + private YoYo anObject; + private Object y; + + public YoYoYo(YoYo anObject, Object y) { + this.anObject = anObject; + this.y = y; + this.x = y; + this.xx = new Object[]{y}; + } + + void foo (){ + YoYo yoYoy = anObject; + Object t = y; + Object t1 = yoYoy.y; + } + } +} + diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java index beb91f535493..7225d898fe3e 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MakeClassStaticTest.java @@ -29,6 +29,8 @@ public class MakeClassStaticTest extends LightCodeInsightTestCase { public void testSimpleWithFields() throws Exception { performWithFields(); } + public void testFieldInitializerMoveToConstructor() throws Exception { performWithFields(); } + public void testQualifiedThisInSibling() throws Exception { perform(); } public void testIDEADEV3247() throws Exception { perform(); }