From 51d17241964fe239016eee30ff6507e219a9e93d Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 20 Jun 2013 12:57:47 +0400 Subject: [PATCH] move members: qualify moved string switch labels on constant move (IDEA-109272) --- .../move/moveMembers/MoveJavaMemberHandler.java | 2 +- .../stringConstantFromCaseStatement/after/A.java | 3 +++ .../stringConstantFromCaseStatement/after/B.java | 8 ++++++++ .../stringConstantFromCaseStatement/before/A.java | 2 ++ .../stringConstantFromCaseStatement/before/B.java | 9 +++++++++ .../com/intellij/refactoring/MoveMembersTest.java | 4 ++++ 6 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/A.java create mode 100644 java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/B.java create mode 100644 java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/A.java create mode 100644 java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/B.java diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveJavaMemberHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveJavaMemberHandler.java index ea39904f5a1d..4dda4d75a304 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveJavaMemberHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveMembers/MoveJavaMemberHandler.java @@ -193,7 +193,7 @@ public class MoveJavaMemberHandler implements MoveMemberHandler { } } else { // no qualifier - if (usage.qualifierClass != null && PsiTreeUtil.getParentOfType(refExpr, PsiSwitchLabelStatement.class) == null) { + if (usage.qualifierClass != null && (!usage.qualifierClass.isEnum() || PsiTreeUtil.getParentOfType(refExpr, PsiSwitchLabelStatement.class) == null)) { changeQualifier(refExpr, usage.qualifierClass, usage.member); } } diff --git a/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/A.java b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/A.java new file mode 100644 index 000000000000..c77f0cda48d3 --- /dev/null +++ b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/A.java @@ -0,0 +1,3 @@ +public class A { + public static final String ONE = ""; +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/B.java b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/B.java new file mode 100644 index 000000000000..6ad677589b48 --- /dev/null +++ b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/after/B.java @@ -0,0 +1,8 @@ +public class B { + void foo(String s) { + switch (i) { + case A.ONE : + break; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/A.java b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/A.java new file mode 100644 index 000000000000..61ff2abcc95e --- /dev/null +++ b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/A.java @@ -0,0 +1,2 @@ +public class A { +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/B.java b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/B.java new file mode 100644 index 000000000000..5ae2faed9bb6 --- /dev/null +++ b/java/java-tests/testData/refactoring/moveMembers/stringConstantFromCaseStatement/before/B.java @@ -0,0 +1,9 @@ +public class B { + public static final String ONE = ""; + void foo(String s) { + switch (i) { + case ONE : + break; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java index 596944b839d3..ca97d36cb650 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java @@ -107,6 +107,10 @@ public class MoveMembersTest extends MultiFileTestCase { doTest("B", "A", 0); } + public void testStringConstantFromCaseStatement() throws Exception { + doTest("B", "A", 0); + } + public void testDependantFields() throws Exception { doTest("B", "A", 0); }