From a5b7676e03b203ec186a2faf1a839fb4b38c234e Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 12 Jan 2016 17:05:51 +0100 Subject: [PATCH] move members: process qualified ref if it was at the same time statically imported (IDEA-91634) --- .../move/moveMembers/MoveJavaMemberHandler.java | 2 +- .../after/ImportingClass.java | 16 ++++++++++++++++ .../before/ImportingClass.java | 16 ++++++++++++++++ .../intellij/refactoring/MoveMembersTest.java | 4 ++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/after/ImportingClass.java create mode 100644 java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/before/ImportingClass.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 742f955d6dbf..950532ebe61b 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 @@ -207,7 +207,7 @@ public class MoveJavaMemberHandler implements MoveMemberHandler { if (RefactoringUtil.hasOnDemandStaticImport(refExpr, aClass) && !(refExpr instanceof PsiMethodReferenceExpression)) { refExpr.setQualifierExpression(null); } - else if (!ImportsUtil.hasStaticImportOn(refExpr, member, false)){ + else if (!ImportsUtil.hasStaticImportOn(refExpr, member, false) || refExpr.getQualifierExpression() != null){ PsiElementFactory factory = JavaPsiFacade.getInstance(refExpr.getProject()).getElementFactory(); refExpr.setQualifierExpression(factory.createReferenceExpression(aClass)); } diff --git a/java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/after/ImportingClass.java b/java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/after/ImportingClass.java new file mode 100644 index 000000000000..91205d758415 --- /dev/null +++ b/java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/after/ImportingClass.java @@ -0,0 +1,16 @@ +import static ImportingClass.ImportantConstants.ReallyImportantConstant; + +public class ImportingClass { + + public static void main(String[] args) { + System.out.println(ReallyImportantConstant); + System.out.println(ImportantConstants.ReallyImportantConstant); + } + + public static class Constants { + } + + public static class ImportantConstants { + public static String ReallyImportantConstant = "important"; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/before/ImportingClass.java b/java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/before/ImportingClass.java new file mode 100644 index 000000000000..925e3d1dc997 --- /dev/null +++ b/java/java-tests/testData/refactoring/moveMembers/mixedStaticImportAndQualified/before/ImportingClass.java @@ -0,0 +1,16 @@ +import static ImportingClass.Constants.ReallyImportantConstant; + +public class ImportingClass { + + public static void main(String[] args) { + System.out.println(ReallyImportantConstant); + System.out.println(Constants.ReallyImportantConstant); + } + + public static class Constants { + public static String ReallyImportantConstant = "important"; + } + + public static class ImportantConstants { + } +} \ 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 79435401350a..8561f61120e7 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/MoveMembersTest.java @@ -190,6 +190,10 @@ public class MoveMembersTest extends MultiFileTestCase { doTest("Outer.Inner", "Outer", true, VisibilityUtil.ESCALATE_VISIBILITY, 0); } + public void testMixedStaticImportAndQualified() throws Exception { + doTest("ImportingClass.Constants", "ImportingClass.ImportantConstants", 0); + } + public void testFromNestedToOuterMethodRef() throws Exception { final LanguageLevelProjectExtension projectExtension = LanguageLevelProjectExtension.getInstance(getProject()); final LanguageLevel oldLevel = projectExtension.getLanguageLevel();