mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
do not replace anonymous inheritance with delegation
This commit is contained in:
+2
@@ -552,6 +552,7 @@ public class InheritanceToDelegationProcessor extends BaseRefactoringProcessor {
|
||||
|
||||
private void addImplementingInterfaces() throws IncorrectOperationException {
|
||||
final PsiReferenceList implementsList = myClass.getImplementsList();
|
||||
LOG.assertTrue(implementsList != null);
|
||||
for (PsiClass delegatedInterface : myDelegatedInterfaces) {
|
||||
if (!myClassImplementedInterfaces.contains(delegatedInterface)) {
|
||||
implementsList.add(myFactory.createClassReferenceElement(delegatedInterface));
|
||||
@@ -560,6 +561,7 @@ public class InheritanceToDelegationProcessor extends BaseRefactoringProcessor {
|
||||
|
||||
if (!myBaseClass.isInterface()) {
|
||||
final PsiReferenceList extendsList = myClass.getExtendsList();
|
||||
LOG.assertTrue(extendsList != null);
|
||||
extendsList.getReferenceElements()[0].delete();
|
||||
} else {
|
||||
final PsiJavaCodeReferenceElement[] interfaceRefs = implementsList.getReferenceElements();
|
||||
|
||||
+2
@@ -19,6 +19,7 @@ import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.ide.DataManager;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiAnonymousClass;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.refactoring.JavaRefactoringActionHandlerFactory;
|
||||
@@ -38,6 +39,7 @@ public class ReplaceInheritanceWithDelegationFix extends InspectionGadgetsFix {
|
||||
public void doFix(@NotNull Project project, ProblemDescriptor descriptor) {
|
||||
final PsiElement nameElement = descriptor.getPsiElement();
|
||||
final PsiClass aClass = (PsiClass) nameElement.getParent();
|
||||
assert !(aClass instanceof PsiAnonymousClass);
|
||||
final JavaRefactoringActionHandlerFactory factory =
|
||||
JavaRefactoringActionHandlerFactory.getInstance();
|
||||
final RefactoringActionHandler anonymousToInner =
|
||||
|
||||
+6
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.inheritance;
|
||||
|
||||
import com.intellij.psi.PsiAnonymousClass;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
@@ -46,7 +47,11 @@ public class ExtendsConcreteCollectionInspection extends BaseInspection {
|
||||
}
|
||||
|
||||
protected InspectionGadgetsFix buildFix(Object... infos) {
|
||||
return new ReplaceInheritanceWithDelegationFix();
|
||||
final PsiClass superClass = (PsiClass)infos[0];
|
||||
//skip inheritance with delegation for anonymous classes
|
||||
// or better suggest to replace anonymous with inner and then replace with delegation
|
||||
if (superClass instanceof PsiAnonymousClass) return null;
|
||||
return new ReplaceInheritanceWithDelegationFix();
|
||||
}
|
||||
|
||||
public BaseInspectionVisitor buildVisitor() {
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.threading;
|
||||
|
||||
import com.intellij.psi.PsiAnonymousClass;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
@@ -41,8 +42,13 @@ public class ExtendsThreadInspection extends BaseInspection {
|
||||
"extends.thread.problem.descriptor");
|
||||
}
|
||||
|
||||
/**
|
||||
* @see com.siyeh.ig.inheritance.ExtendsConcreteCollectionInspection#buildFix(java.lang.Object...)
|
||||
*/
|
||||
protected InspectionGadgetsFix buildFix(Object... infos) {
|
||||
return new ReplaceInheritanceWithDelegationFix();
|
||||
final PsiClass superClass = (PsiClass)infos[0];
|
||||
if (superClass instanceof PsiAnonymousClass) return null;
|
||||
return new ReplaceInheritanceWithDelegationFix();
|
||||
}
|
||||
|
||||
public BaseInspectionVisitor buildVisitor() {
|
||||
@@ -64,7 +70,7 @@ public class ExtendsThreadInspection extends BaseInspection {
|
||||
if (!"java.lang.Thread".equals(superclassName)) {
|
||||
return;
|
||||
}
|
||||
registerClassError(aClass);
|
||||
registerClassError(aClass, aClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user