mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
generate equals/hashcode: use provided psiClass to avoid ambiguity with inner classes (IDEA-164523)
This commit is contained in:
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -112,7 +112,7 @@ public class CreateFieldOrPropertyFix implements IntentionAction, LocalQuickFix
|
||||
private void generateMembers(final Project project, final Editor editor, final PsiFile file) {
|
||||
try {
|
||||
List<? extends GenerationInfo> prototypes = new GenerateFieldOrPropertyHandler(myName, myType, myMemberType, myAnnotations).generateMemberPrototypes(myClass, ClassMember.EMPTY_ARRAY);
|
||||
prototypes = GenerateMembersUtil.insertMembersAtOffset(myClass.getContainingFile(), editor.getCaretModel().getOffset(), prototypes);
|
||||
prototypes = GenerateMembersUtil.insertMembersAtOffset(myClass, editor.getCaretModel().getOffset(), prototypes);
|
||||
if (prototypes.isEmpty()) return;
|
||||
final PsiElement scope = prototypes.get(0).getPsiMember().getContext();
|
||||
assert scope != null;
|
||||
|
||||
+1
-1
@@ -133,7 +133,7 @@ public abstract class GenerateMembersHandlerBase implements CodeInsightActionHan
|
||||
List<? extends GenerationInfo> newMembers;
|
||||
try{
|
||||
List<? extends GenerationInfo> prototypes = generateMemberPrototypes(aClass, members);
|
||||
newMembers = GenerateMembersUtil.insertMembersAtOffset(aClass.getContainingFile(), offset, prototypes);
|
||||
newMembers = GenerateMembersUtil.insertMembersAtOffset(aClass, offset, prototypes);
|
||||
}
|
||||
catch(IncorrectOperationException e){
|
||||
LOG.error(e);
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
@@ -59,12 +60,29 @@ public class GenerateMembersUtil {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <T extends GenerationInfo> List<T> insertMembersAtOffset(PsiFile file, int offset, @NotNull List<T> memberPrototypes) throws IncorrectOperationException {
|
||||
public static <T extends GenerationInfo> List<T> insertMembersAtOffset(PsiFile file,
|
||||
int offset,
|
||||
@NotNull List<T> memberPrototypes) throws IncorrectOperationException {
|
||||
return insertMembersAtOffset(file, offset, memberPrototypes, leaf -> findClassAtOffset(file, leaf));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <T extends GenerationInfo> List<T> insertMembersAtOffset(@NotNull PsiClass psiClass,
|
||||
int offset,
|
||||
@NotNull List<T> memberPrototypes) throws IncorrectOperationException {
|
||||
return insertMembersAtOffset(psiClass.getContainingFile(), offset, memberPrototypes, leaf -> psiClass);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static <T extends GenerationInfo> List<T> insertMembersAtOffset(PsiFile file,
|
||||
int offset,
|
||||
@NotNull List<T> memberPrototypes,
|
||||
final Function<PsiElement, PsiClass> aClassFunction) throws IncorrectOperationException {
|
||||
if (memberPrototypes.isEmpty()) return memberPrototypes;
|
||||
final PsiElement leaf = file.findElementAt(offset);
|
||||
if (leaf == null) return Collections.emptyList();
|
||||
|
||||
PsiClass aClass = findClassAtOffset(file, leaf);
|
||||
PsiClass aClass = aClassFunction.fun(leaf);
|
||||
if (aClass == null) return Collections.emptyList();
|
||||
PsiElement anchor = memberPrototypes.get(0).findInsertionAnchor(aClass, leaf);
|
||||
|
||||
|
||||
@@ -526,7 +526,7 @@ public class OverrideImplementUtil extends OverrideImplementExploreUtil {
|
||||
}
|
||||
else {
|
||||
List<PsiGenerationInfo<PsiMethod>> prototypes = overrideOrImplementMethods(aClass, candidates, copyJavadoc, insertOverrideWherePossible);
|
||||
resultMembers = GenerateMembersUtil.insertMembersAtOffset(aClass.getContainingFile(), offset, prototypes);
|
||||
resultMembers = GenerateMembersUtil.insertMembersAtOffset(aClass, offset, prototypes);
|
||||
}
|
||||
|
||||
if (!resultMembers.isEmpty()) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -34,7 +34,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.LabeledComponent;
|
||||
import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -293,7 +292,7 @@ public class GenerateVisitorByHierarchyAction extends AnAction {
|
||||
accept.replace(method);
|
||||
}
|
||||
else {
|
||||
GenerateMembersUtil.insertMembersAtOffset(implementor.getContainingFile(), implementor.getLastChild().getTextOffset(), Collections.<GenerationInfo>singletonList(
|
||||
GenerateMembersUtil.insertMembersAtOffset(implementor, implementor.getLastChild().getTextOffset(), Collections.<GenerationInfo>singletonList(
|
||||
new PsiGenerationInfo<>(method)));
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ public class InsertAtCaretStrategy implements InsertNewMethodStrategy {
|
||||
public PsiMethod insertNewMethod(PsiClass clazz, @NotNull PsiMethod newMethod, Editor editor) {
|
||||
int offset = (editor != null) ? editor.getCaretModel().getOffset() : (clazz.getTextRange().getEndOffset() - 1);
|
||||
final PsiGenerationInfo<PsiMethod> generationInfo = new PsiGenerationInfo<>(newMethod, false);
|
||||
GenerateMembersUtil.insertMembersAtOffset(clazz.getContainingFile(), offset, Arrays.asList(generationInfo));
|
||||
GenerateMembersUtil.insertMembersAtOffset(clazz, offset, Arrays.asList(generationInfo));
|
||||
return generationInfo.getPsiMember();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user