create inner: ensure no modifiers inside local/anonymous classes (IDEA-167727)

This commit is contained in:
Anna.Kozlova
2017-02-06 19:08:41 +01:00
parent 501bffdb00
commit 6be04d9bf2
3 changed files with 30 additions and 1 deletions
@@ -54,7 +54,7 @@ public class CreateInnerClassFromNewFix extends CreateClassFromNewFix {
final PsiModifierList modifierList = created.getModifierList();
LOG.assertTrue(modifierList != null);
if (PsiTreeUtil.isAncestor(targetClass, newExpression, true)) {
if (targetClass.isInterface()) {
if (targetClass.isInterface() || PsiUtil.isLocalOrAnonymousClass(targetClass)) {
modifierList.setModifierProperty(PsiModifier.PACKAGE_LOCAL, true);
} else {
modifierList.setModifierProperty(PsiModifier.PRIVATE, true);
@@ -0,0 +1,17 @@
// "Create inner class 'MyCollection'" "true"
import java.util.*;
public interface I {
public static void main() {
class C {
{
Collection c = new MyCollection(1, "test");
}
class MyCollection implements Collection {
public MyCollection(int i, String test) {
}
}
}
}
}
@@ -0,0 +1,12 @@
// "Create inner class 'MyCollection'" "true"
import java.util.*;
public interface I {
public static void main() {
class C {
{
Collection c = new <caret>MyCollection(1, "test");
}
}
}
}