mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java-actions] IDEA-340069 Don't offer replace constructor with factory if it is inside implicit class
GitOrigin-RevId: 5d44f909e46220a49a88e31f23bad09ec9868e44
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9f280818c9
commit
0d55ac4678
+8
-2
@@ -16,6 +16,7 @@ import com.intellij.psi.impl.source.resolve.JavaResolveUtil;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.psi.util.PsiFormatUtilBase;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
@@ -243,7 +244,12 @@ public class ReplaceConstructorWithFactoryAction implements ModCommandAction {
|
||||
}
|
||||
|
||||
private static boolean isSuitableClass(PsiClass containingClass) {
|
||||
return containingClass != null && !containingClass.isInterface() && !containingClass.isEnum() && !containingClass.isRecord() &&
|
||||
!containingClass.hasModifierProperty(PsiModifier.ABSTRACT) && containingClass.getQualifiedName() != null;
|
||||
return containingClass != null &&
|
||||
PsiTreeUtil.getParentOfType(containingClass, PsiImplicitClass.class, false) == null &&
|
||||
!containingClass.isInterface() &&
|
||||
!containingClass.isEnum() &&
|
||||
!containingClass.isRecord() &&
|
||||
!containingClass.hasModifierProperty(PsiModifier.ABSTRACT) &&
|
||||
containingClass.getQualifiedName() != null;
|
||||
}
|
||||
}
|
||||
|
||||
+17
@@ -75,6 +75,23 @@ public class ReplaceConstructorWithFactoryTest extends LightRefactoringTestCase
|
||||
assertNull(presentation);
|
||||
}
|
||||
|
||||
public void testImplicitClass(){
|
||||
configureFromFileText("A.java", """
|
||||
enum E {A, B}
|
||||
|
||||
record Rar() {
|
||||
}
|
||||
|
||||
void main() {
|
||||
Rar rar = new R<caret>ar();
|
||||
}
|
||||
""");
|
||||
ReplaceConstructorWithFactoryAction action = new ReplaceConstructorWithFactoryAction();
|
||||
ActionContext context = ActionContext.from(getEditor(), getFile());
|
||||
Presentation presentation = action.getPresentation(context);
|
||||
assertNull(presentation);
|
||||
}
|
||||
|
||||
private void runTest(final String testIndex, @NonNls String targetClassName) {
|
||||
configureByFile("/refactoring/replaceConstructorWithFactory/before" + testIndex + ".java");
|
||||
perform(targetClassName);
|
||||
|
||||
Reference in New Issue
Block a user