mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
suggest to override clone method from super class, not from Object
This commit is contained in:
+11
-4
@@ -1,10 +1,11 @@
|
||||
package com.intellij.codeInsight.generation;
|
||||
|
||||
import com.intellij.codeInsight.hint.HintManager;
|
||||
import com.intellij.lang.LanguageCodeInsightActionHandler;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiJavaFile;
|
||||
|
||||
/**
|
||||
@@ -17,15 +18,21 @@ public class JavaImplementMethodsHandler implements LanguageCodeInsightActionHan
|
||||
}
|
||||
|
||||
PsiClass aClass = OverrideImplementUtil.getContextClass(file.getProject(), editor, file, false);
|
||||
return aClass != null && !OverrideImplementUtil.getMethodSignaturesToImplement(aClass).isEmpty();
|
||||
return aClass != null;
|
||||
}
|
||||
|
||||
public void invoke(final Project project, final Editor editor, final PsiFile file) {
|
||||
PsiClass aClass = OverrideImplementUtil.getContextClass(project, editor, file, false);
|
||||
if (aClass != null) {
|
||||
OverrideImplementUtil.chooseAndImplementMethods(project, editor, aClass);
|
||||
if (aClass == null) {
|
||||
return;
|
||||
}
|
||||
if (OverrideImplementUtil.getMethodSignaturesToImplement(aClass).isEmpty()) {
|
||||
HintManager.getInstance().showErrorHint(editor, "No methods to implement have been found");
|
||||
return;
|
||||
}
|
||||
OverrideImplementUtil.chooseAndImplementMethods(project, editor, aClass);
|
||||
}
|
||||
|
||||
public boolean startInWriteAction() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -86,11 +86,13 @@ public class OverrideImplementUtil {
|
||||
Map<MethodSignature, PsiMethod> concretes = new LinkedHashMap<MethodSignature,PsiMethod>();
|
||||
Map<PsiClass, PsiSubstitutor> substitutors = new HashMap<PsiClass,PsiSubstitutor>();
|
||||
|
||||
PsiMethod[] allMethods = aClass.getAllMethods();
|
||||
Collection<HierarchicalMethodSignature> allMethodSigs = aClass.getVisibleSignatures();
|
||||
PsiResolveHelper resolveHelper = JavaPsiFacade.getInstance(aClass.getProject()).getResolveHelper();
|
||||
for (PsiMethod method : allMethods) {
|
||||
for (HierarchicalMethodSignature methodSig : allMethodSigs) {
|
||||
PsiMethod method = methodSig.getMethod();
|
||||
if (method.hasModifierProperty(PsiModifier.STATIC) || !resolveHelper.isAccessible(method, aClass, aClass)) continue;
|
||||
PsiClass hisClass = method.getContainingClass();
|
||||
if (hisClass == null) continue;
|
||||
//Filter non-immediate super constructors
|
||||
if (method.isConstructor() && (!aClass.isInheritor(hisClass, false) || aClass instanceof PsiAnonymousClass || aClass.isEnum())) {
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user