From 832256ec3375a6c00e3275aca658bc12e09d0450 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 23 Aug 2013 17:09:15 +0400 Subject: [PATCH] extract enum: ensure normalized fields (IDEA-112590) --- .../extractclass/usageInfo/RemoveField.java | 1 + .../extractEnum/normalize/after/EEnum.java | 12 ++++++++++++ .../extractEnum/normalize/after/Test.java | 5 +++++ .../extractEnum/normalize/after/Usage.java | 15 +++++++++++++++ .../extractEnum/normalize/before/Test.java | 6 ++++++ .../extractEnum/normalize/before/Usage.java | 15 +++++++++++++++ .../com/intellij/refactoring/ExtractEnumTest.java | 5 +++++ 7 files changed, 59 insertions(+) create mode 100644 java/java-tests/testData/refactoring/extractEnum/normalize/after/EEnum.java create mode 100644 java/java-tests/testData/refactoring/extractEnum/normalize/after/Test.java create mode 100644 java/java-tests/testData/refactoring/extractEnum/normalize/after/Usage.java create mode 100644 java/java-tests/testData/refactoring/extractEnum/normalize/before/Test.java create mode 100644 java/java-tests/testData/refactoring/extractEnum/normalize/before/Usage.java diff --git a/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RemoveField.java b/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RemoveField.java index f77b9bdc43ad..4216b6d8d01d 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RemoveField.java +++ b/java/java-impl/src/com/intellij/refactoring/extractclass/usageInfo/RemoveField.java @@ -28,6 +28,7 @@ public class RemoveField extends FixableUsageInfo { } public void fixUsage() throws IncorrectOperationException { + field.normalizeDeclaration(); field.delete(); } } diff --git a/java/java-tests/testData/refactoring/extractEnum/normalize/after/EEnum.java b/java/java-tests/testData/refactoring/extractEnum/normalize/after/EEnum.java new file mode 100644 index 000000000000..1a69466c2e3a --- /dev/null +++ b/java/java-tests/testData/refactoring/extractEnum/normalize/after/EEnum.java @@ -0,0 +1,12 @@ +public enum EEnum { + FOO(0), BAR(2); + private int value; + + public int getValue() { + return value; + } + + EEnum(int value) { + this.value = value; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractEnum/normalize/after/Test.java b/java/java-tests/testData/refactoring/extractEnum/normalize/after/Test.java new file mode 100644 index 000000000000..c38448b383c5 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractEnum/normalize/after/Test.java @@ -0,0 +1,5 @@ +class Test { + void foo() { + System.out.println(EEnum.FOO.getValue()); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractEnum/normalize/after/Usage.java b/java/java-tests/testData/refactoring/extractEnum/normalize/after/Usage.java new file mode 100644 index 000000000000..310fdee953ef --- /dev/null +++ b/java/java-tests/testData/refactoring/extractEnum/normalize/after/Usage.java @@ -0,0 +1,15 @@ +class Usage { + void foo(EEnum i) { + switch (i) { + case FOO: + break; + case BAR: + break; + } + } + + void foobar() { + foo(EEnum.FOO); + foo(EEnum.BAR); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractEnum/normalize/before/Test.java b/java/java-tests/testData/refactoring/extractEnum/normalize/before/Test.java new file mode 100644 index 000000000000..db086475758e --- /dev/null +++ b/java/java-tests/testData/refactoring/extractEnum/normalize/before/Test.java @@ -0,0 +1,6 @@ +class Test { + public static final int FOO = 0, BAR = 2; + void foo() { + System.out.println(FOO); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractEnum/normalize/before/Usage.java b/java/java-tests/testData/refactoring/extractEnum/normalize/before/Usage.java new file mode 100644 index 000000000000..7563c64e1cb5 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractEnum/normalize/before/Usage.java @@ -0,0 +1,15 @@ +class Usage { + void foo(int i) { + switch (i) { + case Test.FOO: + break; + case Test.BAR: + break; + } + } + + void foobar() { + foo(Test.FOO); + foo(Test.BAR); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java index b4962fa686a0..48d711b9593e 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractEnumTest.java @@ -124,6 +124,11 @@ public class ExtractEnumTest extends MultiFileTestCase { new RefactoringTestUtil.MemberDescriptor("BAR", PsiField.class, true)); } + public void testNormalize() throws Exception { + doTest(new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, true), + new RefactoringTestUtil.MemberDescriptor("BAR", PsiField.class, true)); + } + public void testUnknownSwitchLabel() throws Exception { doTest("Unable to migrate statement to enum constant. 8 can not be replaced with enum", false, new RefactoringTestUtil.MemberDescriptor("FOO", PsiField.class, true),