mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
fix modifiers for created inner classes (IDEA-167750)
This commit is contained in:
@@ -61,7 +61,7 @@ public class CreateInnerClassFromNewFix extends CreateClassFromNewFix {
|
||||
}
|
||||
}
|
||||
|
||||
if (!PsiTreeUtil.isAncestor(targetClass, newExpression, true) || PsiUtil.getEnclosingStaticElement(newExpression, targetClass) != null || isInThisOrSuperCall(newExpression)) {
|
||||
if (!targetClass.isInterface() && (!PsiTreeUtil.isAncestor(targetClass, newExpression, true) || PsiUtil.getEnclosingStaticElement(newExpression, targetClass) != null || isInThisOrSuperCall(newExpression))) {
|
||||
modifierList.setModifierProperty(PsiModifier.STATIC, true);
|
||||
}
|
||||
created = (PsiClass)targetClass.add(created);
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.popup.PopupChooserBuilder;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.ui.components.JBList;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -139,12 +140,12 @@ public class CreateInnerClassFromUsageFix extends CreateClassFromUsageBaseFix {
|
||||
: myKind == CreateClassKind.CLASS ? elementFactory.createClass(refName) : elementFactory.createEnum(refName);
|
||||
final PsiModifierList modifierList = created.getModifierList();
|
||||
LOG.assertTrue(modifierList != null);
|
||||
if (aClass.isInterface()) {
|
||||
if (aClass.isInterface() || PsiUtil.isLocalOrAnonymousClass(aClass)) {
|
||||
modifierList.setModifierProperty(PsiModifier.PACKAGE_LOCAL, true);
|
||||
} else {
|
||||
modifierList.setModifierProperty(PsiModifier.PRIVATE, true);
|
||||
}
|
||||
if (RefactoringUtil.isInStaticContext(ref, aClass)) {
|
||||
if (RefactoringUtil.isInStaticContext(ref, aClass) && !aClass.isInterface()) {
|
||||
modifierList.setModifierProperty(PsiModifier.STATIC, true);
|
||||
}
|
||||
if (superClassName != null) {
|
||||
|
||||
@@ -6,7 +6,7 @@ public interface I {
|
||||
Collection c = new MyCollection(1, "test");
|
||||
}
|
||||
|
||||
static class MyCollection implements Collection {
|
||||
class MyCollection implements Collection {
|
||||
public MyCollection(int i, String test) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// "Create inner class 'Param'" "true"
|
||||
import java.util.*;
|
||||
|
||||
public interface I {
|
||||
void foo(Param p);
|
||||
|
||||
class Param {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// "Create inner class 'Param'" "true"
|
||||
import java.util.*;
|
||||
|
||||
public interface I {
|
||||
void foo(Par<caret>am p);
|
||||
}
|
||||
Reference in New Issue
Block a user