From 2975198b4c5ae5700d2d0297e6f667771351a83d Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 18 Sep 2013 14:33:09 +0400 Subject: [PATCH] Attempt to simplify hashCode and equals login in JetLookupObject --- .../plugin/completion/JetLookupObject.java | 47 ++++++------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetLookupObject.java b/idea/src/org/jetbrains/jet/plugin/completion/JetLookupObject.java index 97cd2895a5b..3af8e174068 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetLookupObject.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetLookupObject.java @@ -58,50 +58,31 @@ public final class JetLookupObject { @Override public String toString() { - return super.toString() + " " + - descriptor + " " + - psiElement; + return super.toString() + " " + descriptor + " " + psiElement; } @Override public int hashCode() { - // Always check with equals - return 0; + int result = descriptor != null ? descriptor.hashCode() : 0; + result = 31 * result + (psiElement != null ? psiElement.hashCode() : 0); + return result; } @Override public boolean equals(Object obj) { - if (obj == null || obj.getClass() != getClass()) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + + JetLookupObject lookupObject = (JetLookupObject) obj; + + if (!analyzer.equals(lookupObject.analyzer)) { + LOG.warn("Descriptors from different resolve sessions"); return false; } - JetLookupObject other = (JetLookupObject)obj; + if (descriptor != null ? !descriptor.equals(lookupObject.descriptor) : lookupObject.descriptor != null) return false; + if (psiElement != null ? !psiElement.equals(lookupObject.psiElement) : lookupObject.psiElement != null) return false; - // Same descriptor - same lookup element - if (descriptor != null && other.descriptor != null) { - if (analyzer == other.analyzer) { - if (descriptor.equals(other.descriptor)) { - return true; - } - } - else { - LOG.warn("Descriptors from different resolve sessions"); - - String descriptorText = DescriptorRenderer.TEXT.render(descriptor); - @SuppressWarnings("ConstantConditions") - String otherDescriptorText = DescriptorRenderer.TEXT.render(other.descriptor); - if (descriptorText.equals(otherDescriptorText)) { - return true; - } - } - } - - if (psiElement != null && psiElement.equals(other.psiElement)) { - LOG.warn("Different descriptors for same psi elements"); - return true; - } - - return (descriptor == null && other.descriptor == null && - psiElement == null && other.psiElement == null); + return true; } }