disable create instance field inside interface (IDEA-127211)

This commit is contained in:
Anna Kozlova
2014-07-14 20:55:31 +02:00
parent 65d11dd095
commit 590ed4cc23
3 changed files with 24 additions and 0 deletions

View File

@@ -28,6 +28,9 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
/**
* @author Mike
*/
@@ -45,6 +48,19 @@ public class CreateFieldFromUsageFix extends CreateVarFromUsageFix {
return false;
}
@NotNull
@Override
protected List<PsiClass> getTargetClasses(PsiElement element) {
final List<PsiClass> targetClasses = new ArrayList<PsiClass>();
for (PsiClass psiClass : super.getTargetClasses(element)) {
if (psiClass.getManager().isInProject(psiClass) &&
(!psiClass.isInterface() && !psiClass.isAnnotationType() || shouldCreateStaticMember(myReferenceExpression, psiClass))) {
targetClasses.add(psiClass);
}
}
return targetClasses;
}
@Override
protected boolean canBeTargetClass(PsiClass psiClass) {
return psiClass.getManager().isInProject(psiClass) && !psiClass.isInterface() && !psiClass.isAnnotationType();

View File

@@ -0,0 +1,7 @@
// "Create Field 'myFoo'" "false"
interface Test {
default String get() {
return my<caret>Foo;
}
}

View File

@@ -24,6 +24,7 @@ public class CreateFieldFromUsageTest extends LightQuickFixTestCase {
public void testInsideStaticInnerClass() throws Exception { doSingleTest(); }
public void testCreateFromEquals() throws Exception { doSingleTest(); }
public void testCreateFromEqualsToPrimitiveType() throws Exception { doSingleTest(); }
public void testInsideInterface() throws Exception { doSingleTest(); }
public void testWithAlignment() throws Exception {
final CommonCodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()).getCommonSettings(JavaLanguage.INSTANCE);
boolean old = settings.ALIGN_GROUP_FIELD_DECLARATIONS;