From 6be04d9bf29cb72dba544145b5459613f2f89c28 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 6 Feb 2017 14:08:13 +0100 Subject: [PATCH] create inner: ensure no modifiers inside local/anonymous classes (IDEA-167727) --- .../quickfix/CreateInnerClassFromNewFix.java | 2 +- .../createInnerClassFromNew/afterInLocal.java | 17 +++++++++++++++++ .../createInnerClassFromNew/beforeInLocal.java | 12 ++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/afterInLocal.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/beforeInLocal.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateInnerClassFromNewFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateInnerClassFromNewFix.java index bb10dc5cad71..6908672a84c4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateInnerClassFromNewFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateInnerClassFromNewFix.java @@ -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); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/afterInLocal.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/afterInLocal.java new file mode 100644 index 000000000000..f3a4648cf709 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/afterInLocal.java @@ -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) { + } + } + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/beforeInLocal.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/beforeInLocal.java new file mode 100644 index 000000000000..c7cacaf493d7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createInnerClassFromNew/beforeInLocal.java @@ -0,0 +1,12 @@ +// "Create inner class 'MyCollection'" "true" +import java.util.*; + +public interface I { + public static void main() { + class C { + { + Collection c = new MyCollection(1, "test"); + } + } + } +} \ No newline at end of file