private void generateDataClassEqualsIfNeeded(@NotNull List<PropertyDescriptor> properties) { FunctionDescriptor function = getDeclaredMember("equals", builtIns.getBoolean(), builtIns.getAny()); if (function != null && isTrivial(function)) { generateEqualsMethod(function, properties); } }
/** @return true if the member is an inherited implementation of a method from Any */ private boolean isTrivial(@NotNull FunctionDescriptor function) { if (function.getKind() == CallableMemberDescriptor.Kind.DECLARATION) { return false; } for (CallableDescriptor overridden : OverrideResolver.getOverriddenDeclarations(function)) { if (overridden instanceof CallableMemberDescriptor && ((CallableMemberDescriptor) overridden).getKind() == CallableMemberDescriptor.Kind.DECLARATION && !overridden.getContainingDeclaration().equals(builtIns.getAny())) { return false; } } return true; }