From 0ffd34b212a72dfa6f65a64f17f0686b4e65a2ed Mon Sep 17 00:00:00 2001 From: Eugene Vigdorchik Date: Wed, 2 Mar 2005 19:28:11 +0300 Subject: [PATCH] (no message) --- .../generation/GenerateEqualsHandler.java | 4 ++- .../generation/GenerateEqualsHelper.java | 26 ++++++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/source/com/intellij/codeInsight/generation/GenerateEqualsHandler.java b/source/com/intellij/codeInsight/generation/GenerateEqualsHandler.java index 87673caa9268..a6352e281ce3 100644 --- a/source/com/intellij/codeInsight/generation/GenerateEqualsHandler.java +++ b/source/com/intellij/codeInsight/generation/GenerateEqualsHandler.java @@ -11,6 +11,7 @@ import com.intellij.psi.PsiAnonymousClass; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; import com.intellij.psi.PsiMethod; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.IncorrectOperationException; import com.intellij.util.ArrayUtil; @@ -34,7 +35,8 @@ public class GenerateEqualsHandler extends GenerateMembersHandlerBase { myNonNullFields = PsiField.EMPTY_ARRAY; - final PsiMethod equalsMethod = GenerateEqualsHelper.findMethod(aClass, GenerateEqualsHelper.getEqualsSignature(project)); + GlobalSearchScope scope = aClass.getResolveScope(); + final PsiMethod equalsMethod = GenerateEqualsHelper.findMethod(aClass, GenerateEqualsHelper.getEqualsSignature(project, scope)); final PsiMethod hashCodeMethod = GenerateEqualsHelper.findMethod(aClass, GenerateEqualsHelper.getHashCodeSignature()); boolean needEquals = equalsMethod == null; diff --git a/source/com/intellij/codeInsight/generation/GenerateEqualsHelper.java b/source/com/intellij/codeInsight/generation/GenerateEqualsHelper.java index fbaa28c62aff..788bf1a1fdb1 100644 --- a/source/com/intellij/codeInsight/generation/GenerateEqualsHelper.java +++ b/source/com/intellij/codeInsight/generation/GenerateEqualsHelper.java @@ -4,6 +4,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CodeStyleSettingsManager; @@ -24,7 +25,7 @@ public class GenerateEqualsHelper implements Runnable { private PsiClass myClass; private PsiField[] myEqualsFields; private PsiField[] myHashCodeFields; - private HashSet myNonNullSet; + private HashSet myNonNullSet; private final PsiElementFactory myFactory; private final PsiManager myManager; private String myParameterName; @@ -34,7 +35,7 @@ public class GenerateEqualsHelper implements Runnable { private PsiType myClassType; private String myClassInstanceName; - private static final com.intellij.util.containers.HashMap PRIMITIVE_HASHCODE_FORMAT = new com.intellij.util.containers.HashMap(); + private static final com.intellij.util.containers.HashMap PRIMITIVE_HASHCODE_FORMAT = new com.intellij.util.containers.HashMap(); private final boolean mySuperHasHashCode; private CodeStyleManager myCodeStyleManager; private final Project myProject; @@ -49,7 +50,7 @@ public class GenerateEqualsHelper implements Runnable { myHashCodeFields = hashCodeFields; myProject = project; - myNonNullSet = new HashSet(); + myNonNullSet = new HashSet(); for (int i = 0; i < nonNullFields.length; i++) { PsiField field = nonNullFields[i]; myNonNullSet.add(field); @@ -105,7 +106,7 @@ public class GenerateEqualsHelper implements Runnable { public PsiElement[] generateMembers() throws IncorrectOperationException { PsiMethod equals = null; - if (myEqualsFields != null && findMethod(myClass, getEqualsSignature(myProject)) == null) { + if (myEqualsFields != null && findMethod(myClass, getEqualsSignature(myProject, myClass.getResolveScope())) == null) { equals = createEquals(); } @@ -153,14 +154,14 @@ public class GenerateEqualsHelper implements Runnable { if (myEqualsFields.length > 0) { addClassInstance(buffer); - ArrayList equalsFields = new ArrayList(); + ArrayList equalsFields = new ArrayList(); for (int i = 0; i < myEqualsFields.length; i++) { equalsFields.add(myEqualsFields[i]); } Collections.sort(equalsFields, EqualsFieldsComparator.INSTANCE); - for (Iterator iterator = equalsFields.iterator(); iterator.hasNext();) { - PsiField field = (PsiField) iterator.next(); + for (Iterator iterator = equalsFields.iterator(); iterator.hasNext();) { + PsiField field = iterator.next(); if (!field.hasModifierProperty(PsiModifier.STATIC)) { final PsiType type = field.getType(); @@ -236,13 +237,13 @@ public class GenerateEqualsHelper implements Runnable { } private void addInstanceOfToText(StringBuffer buffer, String returnValue) { - buffer.append("if(!(" + myParameterName + " instanceof " + myClass.getName() + ")) " + + buffer.append("if(getClass() != " + myParameterName + ".getClass()) " + "return " + returnValue + ";\n"); } private void addEqualsPrologue(StringBuffer buffer) { buffer.append("if(this==" + myParameterName + ") return true;\n"); - if (!superMethodExists(getEqualsSignature(myProject))) { + if (!superMethodExists(getEqualsSignature(myProject, myClass.getResolveScope()))) { addInstanceOfToText(buffer, "false"); } else { addInstanceOfToText(buffer, "false"); @@ -369,7 +370,7 @@ public class GenerateEqualsHelper implements Runnable { } private void addPrimitiveFieldHashCode(StringBuffer buffer, PsiField field, String tempName) { - MessageFormat format = (MessageFormat) PRIMITIVE_HASHCODE_FORMAT.get(field.getType().getCanonicalText()); + MessageFormat format = PRIMITIVE_HASHCODE_FORMAT.get(field.getType().getCanonicalText()); buffer.append(format.format(new Object[]{field.getName(), tempName})); } @@ -455,7 +456,8 @@ public class GenerateEqualsHelper implements Runnable { return MethodSignatureUtil.createMethodSignature("hashCode",(PsiType[])null,null,PsiSubstitutor.EMPTY); } - public static MethodSignature getEqualsSignature(Project project) { - return MethodSignatureUtil.createMethodSignature("equals",new PsiType[]{PsiType.getJavaLangObject(PsiManager.getInstance(project))},null,PsiSubstitutor.EMPTY); + public static MethodSignature getEqualsSignature(Project project, GlobalSearchScope scope) { + final PsiClassType javaLangObject = PsiType.getJavaLangObject(PsiManager.getInstance(project), scope); + return MethodSignatureUtil.createMethodSignature("equals",new PsiType[]{javaLangObject},null,PsiSubstitutor.EMPTY); } }