mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
InlineToAnonymousClassHandler: run toAnonymousClass before superClass inline, check InlineToAnonymousClassHandler#canInlineElement in tests (IJ-CR-21450)
GitOrigin-RevId: 611afbfe041fb69973fa2d1536336b59c7a97ce9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d2bf3cf8ab
commit
f151fd0d99
+2
-2
@@ -60,8 +60,8 @@ public class InlineToAnonymousClassHandler extends JavaInlineActionHandler {
|
||||
if (element instanceof PsiAnonymousClass) return false;
|
||||
PsiClass psiClass = (PsiClass)element;
|
||||
if (hasInheritors(psiClass)) return false;
|
||||
boolean hasMethods = PsiTreeUtil.findChildOfType(psiClass, PsiMember.class) != null;
|
||||
return !hasMethods || !SealedUtils.hasSealedParent(psiClass);
|
||||
boolean hasMembers = PsiTreeUtil.findChildOfType(psiClass, PsiMember.class) != null;
|
||||
return !hasMembers || !SealedUtils.hasSealedParent(psiClass);
|
||||
}
|
||||
|
||||
private static boolean hasInheritors(final PsiClass element) {
|
||||
|
||||
@@ -962,8 +962,8 @@
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inline.InlineConstantFieldHandler"/>
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inline.InlineLocalHandler"/>
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inline.InlineMethodHandler"/>
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inlineSuperClass.InlineSuperClassRefactoringHandler"/>
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inline.InlineToAnonymousClassHandler"/>
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inlineSuperClass.InlineSuperClassRefactoringHandler" id="superClass"/>
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inline.InlineToAnonymousClassHandler" order="before superClass"/>
|
||||
<inlineActionHandler implementation="com.intellij.refactoring.inline.InlineParameterHandler"/>
|
||||
<generateAccessorProvider implementation="com.intellij.codeInsight.generation.JavaGenerateAccessorProvider"/>
|
||||
<suggestedRefactoringSupport language="JAVA" implementationClass="com.intellij.java.refactoring.suggested.JavaSuggestedRefactoringSupport"/>
|
||||
|
||||
+1
@@ -77,6 +77,7 @@ public class InlineToAnonymousClassMultifileTest extends LightMultiFileTestCase
|
||||
PsiClass classToInline = myFixture.findClass(className);
|
||||
classToInline = (PsiClass)classToInline.getNavigationElement();
|
||||
assertNull(InlineToAnonymousClassHandler.getCannotInlineMessage(classToInline));
|
||||
assertTrue(new InlineToAnonymousClassHandler().canInlineElement(classToInline));
|
||||
InlineToAnonymousClassProcessor processor = new InlineToAnonymousClassProcessor(getProject(),
|
||||
classToInline,
|
||||
null, false, false, false);
|
||||
|
||||
+5
-4
@@ -255,7 +255,7 @@ public class InlineToAnonymousClassTest extends LightRefactoringTestCase {
|
||||
doTest(true, false);
|
||||
}
|
||||
|
||||
public void testSealed() {
|
||||
public void testSealedNoMembers() {
|
||||
setLanguageLevel(LanguageLevel.JDK_16_PREVIEW);
|
||||
doTest(false, false);
|
||||
}
|
||||
@@ -442,7 +442,8 @@ public class InlineToAnonymousClassTest extends LightRefactoringTestCase {
|
||||
.findTargetElement(getEditor(), TargetElementUtil.ELEMENT_NAME_ACCEPTED | TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED);
|
||||
PsiCall callToInline = InlineToAnonymousClassHandler.findCallToInline(getEditor());
|
||||
PsiClass classToInline = (PsiClass) element;
|
||||
assertEquals(null, InlineToAnonymousClassHandler.getCannotInlineMessage(classToInline));
|
||||
assertNull(InlineToAnonymousClassHandler.getCannotInlineMessage(classToInline));
|
||||
assertTrue(new InlineToAnonymousClassHandler().canInlineElement(element));
|
||||
final InlineToAnonymousClassProcessor processor = new InlineToAnonymousClassProcessor(getProject(), classToInline, callToInline, inlineThisOnly,
|
||||
false, searchInNonJavaFiles);
|
||||
UsageInfo[] usages = processor.findUsages();
|
||||
@@ -493,9 +494,9 @@ public class InlineToAnonymousClassTest extends LightRefactoringTestCase {
|
||||
.findTargetElement(getEditor(), TargetElementUtil.ELEMENT_NAME_ACCEPTED | TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED);
|
||||
PsiCall callToInline = InlineToAnonymousClassHandler.findCallToInline(getEditor());
|
||||
PsiClass classToInline = (PsiClass) element;
|
||||
assertEquals(null, InlineToAnonymousClassHandler.getCannotInlineMessage(classToInline));
|
||||
assertNull(InlineToAnonymousClassHandler.getCannotInlineMessage(classToInline));
|
||||
final PsiClassType superType = InlineToAnonymousClassProcessor.getSuperType(classToInline);
|
||||
assertTrue(superType != null);
|
||||
assertNotNull(superType);
|
||||
assertEquals(canBeInvokedOnReference, InlineToAnonymousClassHandler.canBeInvokedOnReference(callToInline, superType));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user