diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java index f43b5a98f96..36562d8dbbb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java @@ -96,7 +96,13 @@ public class DeferredType implements JetType { @Override public boolean equals(Object obj) { - return getActualType().equals(obj); + if (this == obj) return true; + JetType actualType = getActualType(); + if (actualType == obj) return true; + + if (!(obj instanceof JetType)) return false; + + return TypeUtils.equalTypes(actualType, (JetType) obj); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeImpl.java index e711d3328bf..3670a6424d7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/JetTypeImpl.java @@ -102,11 +102,11 @@ public final class JetTypeImpl extends AnnotatedImpl implements JetType { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (!(o instanceof JetType)) return false; - JetTypeImpl type = (JetTypeImpl) o; + JetType type = (JetType) o; - return nullable == type.nullable && JetTypeChecker.INSTANCE.equalTypes(this, type); + return nullable == type.isNullable() && JetTypeChecker.INSTANCE.equalTypes(this, type); } @Override