From 27d949bafb1a8e36329162dbb025bbec7f5cfde7 Mon Sep 17 00:00:00 2001 From: Alexandr Suhinin Date: Wed, 30 Dec 2020 11:32:10 +0200 Subject: [PATCH] IJ-CR-4613 refactor this: suggest pull member up to interface & clarify test names GitOrigin-RevId: 6276c4c7c7ecf78261354e52760dcb6a47982b89 --- .../refactoring/memberPullUp/JavaPullUpHandler.java | 10 +++++----- ...{PullMembersUp1.java => PullMembersUpFiltered.java} | 0 ...ullMembersUp.java => PullMembersUpWithExtends.java} | 0 .../refactorThis/PullMembersUpWithImplements.java | 7 +++++++ .../com/intellij/java/refactoring/RefactorThisTest.kt | 8 ++++++-- 5 files changed, 18 insertions(+), 7 deletions(-) rename java/java-tests/testData/refactoring/refactorThis/{PullMembersUp1.java => PullMembersUpFiltered.java} (100%) rename java/java-tests/testData/refactoring/refactorThis/{PullMembersUp.java => PullMembersUpWithExtends.java} (100%) create mode 100644 java/java-tests/testData/refactoring/refactorThis/PullMembersUpWithImplements.java diff --git a/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java b/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java index c2bd885b7a5f..84f4a65bb277 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java @@ -47,13 +47,13 @@ public class JavaPullUpHandler implements RefactoringActionHandler, PullUpDialog public boolean isAvailableForQuickList(@NotNull Editor editor, @NotNull PsiFile file, @NotNull DataContext dataContext) { List elements = getElements(editor, file, true); if (elements.isEmpty()) return false; - return isClassWithExtends(PsiTreeUtil.getParentOfType(elements.get(0), PsiClass.class, false)); + PsiClass psiClass = PsiTreeUtil.getParentOfType(elements.get(0), PsiClass.class, false); + if (psiClass == null) return false; + return isNotEmpty(psiClass.getExtendsList()) || isNotEmpty(psiClass.getImplementsList()); } - private static boolean isClassWithExtends(@Nullable PsiClass psiClass){ - if (psiClass == null) return false; - PsiReferenceList extendsList = psiClass.getExtendsList(); - return extendsList != null && extendsList.getReferenceElements().length > 0; + private static boolean isNotEmpty(@Nullable PsiReferenceList referenceList){ + return referenceList != null && referenceList.getReferenceElements().length > 0; } @Override diff --git a/java/java-tests/testData/refactoring/refactorThis/PullMembersUp1.java b/java/java-tests/testData/refactoring/refactorThis/PullMembersUpFiltered.java similarity index 100% rename from java/java-tests/testData/refactoring/refactorThis/PullMembersUp1.java rename to java/java-tests/testData/refactoring/refactorThis/PullMembersUpFiltered.java diff --git a/java/java-tests/testData/refactoring/refactorThis/PullMembersUp.java b/java/java-tests/testData/refactoring/refactorThis/PullMembersUpWithExtends.java similarity index 100% rename from java/java-tests/testData/refactoring/refactorThis/PullMembersUp.java rename to java/java-tests/testData/refactoring/refactorThis/PullMembersUpWithExtends.java diff --git a/java/java-tests/testData/refactoring/refactorThis/PullMembersUpWithImplements.java b/java/java-tests/testData/refactoring/refactorThis/PullMembersUpWithImplements.java new file mode 100644 index 000000000000..b52896fc6433 --- /dev/null +++ b/java/java-tests/testData/refactoring/refactorThis/PullMembersUpWithImplements.java @@ -0,0 +1,7 @@ +interface A { } + +class B implements A { + void test() { + System.out.println(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/RefactorThisTest.kt b/java/java-tests/testSrc/com/intellij/java/refactoring/RefactorThisTest.kt index 0c4a21489573..b1b69197c839 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/RefactorThisTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/RefactorThisTest.kt @@ -11,11 +11,15 @@ import org.jetbrains.annotations.NonNls class RefactorThisTest: LightJavaCodeInsightTestCase() { private val BASE_PATH: @NonNls String = "/refactoring/refactorThis" - fun testPullMembersUp() { + fun testPullMembersUpWithExtends() { assertTrue(doActionExists()) } - fun testPullMembersUp1() { + fun testPullMembersUpWithImplements() { + assertTrue(doActionExists()) + } + + fun testPullMembersUpFiltered() { assertFalse(doActionExists()) }