ensure public inner inside interface (IDEA-118564)

This commit is contained in:
Anna Kozlova
2013-12-23 16:44:48 +04:00
parent 01753c7677
commit 3d7a8fb300
3 changed files with 26 additions and 1 deletions
@@ -54,7 +54,11 @@ public class CreateInnerClassFromNewFix extends CreateClassFromNewFix {
PsiClass created = elementFactory.createClass(refName);
final PsiModifierList modifierList = created.getModifierList();
LOG.assertTrue(modifierList != null);
modifierList.setModifierProperty(PsiModifier.PRIVATE, true);
if (targetClass.isInterface()) {
modifierList.setModifierProperty(PsiModifier.PACKAGE_LOCAL, true);
} else {
modifierList.setModifierProperty(PsiModifier.PRIVATE, true);
}
if (PsiUtil.getEnclosingStaticElement(newExpression, targetClass) != null || isInThisOrSuperCall(newExpression)) {
modifierList.setModifierProperty(PsiModifier.STATIC, true);
}
@@ -0,0 +1,13 @@
// "Create Inner Class 'MyCollection'" "true"
import java.util.*;
public interface I {
public static void main() {
Collection c = new MyCollection(1, "test");
}
static class MyCollection implements Collection {
public MyCollection(int i, String test) {
}
}
}
@@ -0,0 +1,8 @@
// "Create Inner Class 'MyCollection'" "true"
import java.util.*;
public interface I {
public static void main() {
Collection c = new <caret>MyCollection(1, "test");
}
}