mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
ensure reformat on super class inline (IDEA-170534)
This commit is contained in:
@@ -17,9 +17,11 @@ package com.intellij.refactoring.safeDelete.usageInfo;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.ArrayUtilRt;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author ven
|
||||
@@ -46,31 +48,29 @@ public class SafeDeleteExtendsClassUsageInfo extends SafeDeleteReferenceUsageInf
|
||||
final PsiClass refClass = getReferencedElement();
|
||||
final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(refClass.getProject()).getElementFactory();
|
||||
|
||||
final PsiReferenceList extendsList = refClass.getExtendsList();
|
||||
final PsiReferenceList extendingImplementsList = myExtendingClass instanceof PsiTypeParameter ? myExtendingClass.getExtendsList() : myExtendingClass.getImplementsList();
|
||||
if (extendsList != null) {
|
||||
final PsiClassType[] referenceTypes = extendsList.getReferencedTypes();
|
||||
final PsiReferenceList listToAddExtends = refClass.isInterface() == myExtendingClass.isInterface() || myExtendingClass instanceof PsiTypeParameter ? myExtendingClass.getExtendsList() : extendingImplementsList;
|
||||
final PsiClassType[] existingRefTypes = listToAddExtends.getReferencedTypes();
|
||||
for (PsiClassType referenceType : referenceTypes) {
|
||||
if (ArrayUtilRt.find(existingRefTypes, referenceType) > -1) continue;
|
||||
listToAddExtends.add(elementFactory.createReferenceElementByType((PsiClassType)mySubstitutor.substitute(referenceType)));
|
||||
}
|
||||
}
|
||||
|
||||
final PsiReferenceList implementsList = refClass.getImplementsList();
|
||||
if (implementsList != null) {
|
||||
final PsiClassType[] existingRefTypes = extendingImplementsList.getReferencedTypes();
|
||||
PsiClassType[] referenceTypes = implementsList.getReferencedTypes();
|
||||
for (PsiClassType referenceType : referenceTypes) {
|
||||
if (ArrayUtilRt.find(existingRefTypes, referenceType) > -1) continue;
|
||||
extendingImplementsList.add(elementFactory.createReferenceElementByType((PsiClassType)mySubstitutor.substitute(referenceType)));
|
||||
}
|
||||
}
|
||||
boolean targetTypeParameter = myExtendingClass instanceof PsiTypeParameter;
|
||||
copyExtendsList(refClass.getExtendsList(), refClass.isInterface() == myExtendingClass.isInterface() || targetTypeParameter, elementFactory);
|
||||
copyExtendsList(refClass.getImplementsList(), targetTypeParameter, elementFactory);
|
||||
|
||||
getElement().delete();
|
||||
}
|
||||
|
||||
private void copyExtendsList(@Nullable PsiReferenceList sourceExtendsList,
|
||||
boolean targetExtends,
|
||||
PsiElementFactory elementFactory) {
|
||||
if (sourceExtendsList != null) {
|
||||
final PsiClassType[] referenceTypes = sourceExtendsList.getReferencedTypes();
|
||||
final PsiReferenceList targetExtendsList = targetExtends ? myExtendingClass.getExtendsList() : myExtendingClass.getImplementsList();
|
||||
final PsiClassType[] existingRefTypes = targetExtendsList.getReferencedTypes();
|
||||
for (PsiClassType referenceType : referenceTypes) {
|
||||
if (ArrayUtilRt.find(existingRefTypes, referenceType) > -1) continue;
|
||||
PsiClassType classType = (PsiClassType)mySubstitutor.substitute(referenceType);
|
||||
PsiElement extendsRef = targetExtendsList.add(elementFactory.createReferenceElementByType(classType));
|
||||
CodeStyleManager.getInstance(myExtendingClass.getProject()).reformat(extendsRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSafeDelete() {
|
||||
if (getElement() == null) return false;
|
||||
final PsiClass refClass = getReferencedElement();
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package p;
|
||||
|
||||
public class Test<R> {
|
||||
public class Test<R> extends SSuper<java.util.Map<T, T>> {
|
||||
public void foo(R t) {
|
||||
System.out.println("Hello");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package p1;
|
||||
public class Super<T>{
|
||||
public class Super<T> extends SSuper<java.util.Map<T, T>> {
|
||||
public void foo(T t) {
|
||||
System.out.println("Hello");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user