mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
pull up: disable method entry if superinterface already has this method; leave for class as it could be useful to replace parent implementation with child one (IDEA-100938)
This commit is contained in:
@@ -21,6 +21,9 @@ import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.statistics.StatisticsInfo;
|
||||
import com.intellij.psi.statistics.StatisticsManager;
|
||||
import com.intellij.psi.util.MethodSignature;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.refactoring.HelpID;
|
||||
import com.intellij.refactoring.JavaRefactoringSettings;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
@@ -253,6 +256,12 @@ public class PullUpDialog extends RefactoringDialog {
|
||||
return ((PsiModifierListOwner) element).hasModifierProperty(PsiModifier.STATIC);
|
||||
}
|
||||
if (element instanceof PsiMethod) {
|
||||
if (currentSuperClass.isInterface()) {
|
||||
final PsiSubstitutor superSubstitutor = TypeConversionUtil.getSuperClassSubstitutor(currentSuperClass, myClass, PsiSubstitutor.EMPTY);
|
||||
final MethodSignature signature = ((PsiMethod) element).getSignature(superSubstitutor);
|
||||
final PsiMethod superClassMethod = MethodSignatureUtil.findMethodBySignature(currentSuperClass, signature, false);
|
||||
if (superClassMethod != null) return false;
|
||||
}
|
||||
return !((PsiModifierListOwner) element).hasModifierProperty(PsiModifier.STATIC);
|
||||
}
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user