Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use super equals and hashCode overrides for NonEmptyList #2825

Merged
merged 5 commits into from
Oct 17, 2022

Conversation

RusticFlare
Copy link
Contributor

Fixes #2807 by removing the overrides of equals and hashCode in NonEmptyList, so that we use the implementations in AbstractList.

One thing to note is that Kotest's shouldBe doesn't use the equals function for Iterable, so I've tested the result of == explicitly (and left a comment to that effect).

(This is my first PR here 👋 so let me know if I've missed anything)

@nomisRev
Copy link
Member

Hey @RusticFlare,

This change looks a bit dangerous to me, since it breaks shouldBe from Kotest. I know many people rely on shouldBe on Kotest.

I am wondering if the fix for that ticket is rather not simply removing if (it::class != this::class) from the equals implementation. That way it would solve the issue from the ticket, but wouldn't break shouldBe if not mistaken.

@nomisRev
Copy link
Member

Or is shouldBe incorrect for this kind of comparisons 🤔

@RusticFlare
Copy link
Contributor Author

Hi, it doesn't break shouldBe. I just couldn't use shouldBe to write a failing test because shouldBe doesn't use equals on Iterable. The current behaviour is an obvious bug and I don't think there is any value in overriding the equals and hashCode on AbstractList.

@nomisRev
Copy link
Member

Okay, thanks for clarifying @RusticFlare! I miss-understood.

We cannot break the binary, so instead of removing I think we should manually delegate to the super class for now. We can break the binary in 2.x.x. Then CI should turn green, it's now turning red on a binary breaking change.

API check failed for project arrow-core.

@RusticFlare RusticFlare changed the title Remove equals and hashCode overrides from NonEmptyList Use super equals and hashCode overrides from NonEmptyList Sep 30, 2022
@RusticFlare
Copy link
Contributor Author

@nomisRev I've made the suggested change and hopefully the comment about shouldBe is clearer now

@RusticFlare RusticFlare changed the title Use super equals and hashCode overrides from NonEmptyList Use super equals and hashCode overrides for NonEmptyList Oct 2, 2022
@RusticFlare
Copy link
Contributor Author

Looks like CI is green 🎉 I can make another PR to remove the methods for 2.x.x once this is merged.

Copy link
Member

@nomisRev nomisRev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your first contribution @RusticFlare 🙏:clap::tada: Sorry for the hold-up.

@nomisRev nomisRev requested a review from a team October 17, 2022 05:51
Copy link
Member

@raulraja raulraja left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks @RusticFlare !

@nomisRev nomisRev merged commit 96c774a into arrow-kt:main Oct 17, 2022
@RusticFlare RusticFlare deleted the remove-nel-equals-and-hashcode branch October 19, 2022 14:57
github-merge-queue bot pushed a commit to elide-dev/elide that referenced this pull request Jul 23, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [io.arrow-kt:arrow-fx-coroutines](https://togithub.com/arrow-kt/arrow)
| `1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-fx-coroutines/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-fx-coroutines/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-fx-coroutines/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[io.arrow-kt:arrow-optics-ksp-plugin](https://togithub.com/arrow-kt/arrow)
| `1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-optics-ksp-plugin/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-optics](https://togithub.com/arrow-kt/arrow) |
`1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-optics/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-optics/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-optics/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-optics/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-core](https://togithub.com/arrow-kt/arrow) |
`1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-core/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-core/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-core/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-core/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [io.arrow-kt:arrow-stack](https://togithub.com/arrow-kt/arrow) |
`1.1.3` -> `1.2.0` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/io.arrow-kt:arrow-stack/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/io.arrow-kt:arrow-stack/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/io.arrow-kt:arrow-stack/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.arrow-kt:arrow-stack/1.1.3/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>arrow-kt/arrow (io.arrow-kt:arrow-fx-coroutines)</summary>

### [`v1.2.0`](https://togithub.com/arrow-kt/arrow/releases/tag/1.2.0)

[Compare
Source](https://togithub.com/arrow-kt/arrow/compare/1.1.5...1.2.0)

##### What's Changed

- Add CNAME file to Dokka output by
[@&#8203;franciscodr](https://togithub.com/franciscodr) in
[arrow-kt/arrow#3029
- Remove legacy site code by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#3030
- Update README by [@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3033
- Cancel previous PR action on new commit by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#3032
- Remove legacy script files by
[@&#8203;franciscodr](https://togithub.com/franciscodr) in
[arrow-kt/arrow#3034
- Ensure optics type with "data" modifier is a class by
[@&#8203;DeoTimeTheGithubUser](https://togithub.com/DeoTimeTheGithubUser)
in
[arrow-kt/arrow#3036
- Update all dependencies (major) by
[@&#8203;renovate](https://togithub.com/renovate) in
[arrow-kt/arrow#3042
- Remove test dependency from Arrow Fx by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#3046
- Bump Kotlin, KSP and coroutines version by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#3047
- fix mapIndexed when collecting multiple times by
[@&#8203;hoc081098](https://togithub.com/hoc081098) in
[arrow-kt/arrow#3056
- Update versions by [@&#8203;nomisRev](https://togithub.com/nomisRev)
in
[arrow-kt/arrow#3058
- optics ksp plugin: fixed handling of variance
([#&#8203;3057](https://togithub.com/arrow-kt/arrow/issues/3057)) by
[@&#8203;vladd-g](https://togithub.com/vladd-g) in
[arrow-kt/arrow#3060
- Fixes recover inconsistency with raise DSL on types other than Either
by [@&#8203;yoxjames](https://togithub.com/yoxjames) in
[arrow-kt/arrow#3052
- Change NonEmptySet type parameter name from T to A by
[@&#8203;franciscodr](https://togithub.com/franciscodr) in
[arrow-kt/arrow#3062
- Add withError and (Eager)Effect.mapError by
[@&#8203;kyay10](https://togithub.com/kyay10) in
[arrow-kt/arrow#3059
- Update versions of several libraries by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3017
- Add merge builder for raise by
[@&#8203;kyay10](https://togithub.com/kyay10) in
[arrow-kt/arrow#3061
- Update all dependencies by
[@&#8203;renovate](https://togithub.com/renovate) in
[arrow-kt/arrow#3065
- Update dependency gradle to v8.2 by
[@&#8203;renovate](https://togithub.com/renovate) in
[arrow-kt/arrow#3070
- Fix warnings of single-subclass sealed classes by
[@&#8203;jooohn](https://togithub.com/jooohn) in
[arrow-kt/arrow#3067
- KDoc for `Raise#raise`, `Raise#ensure` and `Raise#ensureNotNull` by
[@&#8203;ILIYANGERMANOV](https://togithub.com/ILIYANGERMANOV) in
[arrow-kt/arrow#3038
- Fix text repetition in EffectScope's deprecation message by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3072
- Introduce `NonEmptyCollection` by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3068
- Set up Spotless by [@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3075
- Update all dependencies by
[@&#8203;renovate](https://togithub.com/renovate) in
[arrow-kt/arrow#3079
- Add option to disable `inline` when using `@optics` by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3078
- Update JS versions in `yarn.lock` by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3084
- Enable Automatic Modules for JVM by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3071
- Serialization module by [@&#8203;serras](https://togithub.com/serras)
in
[arrow-kt/arrow#3077
- Add missing docs for `Raise` operations by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3082
- Add mapOrAccumulate extension in RaiseAccumulate by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#3086
- Additional tests for `copy` in Optics by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3089
- Apply Gradle Versioning in top project by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3092
- Add missing Versioning plug-in to `arrow-core-retrofit` by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3093
- Update `arrow-gradle-config` to 0.12-rc.4 by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3094
- MemoizedDeepRecursiveFunction by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#3091
- Add reset and barrierAction to CyclicBarrier. by
[@&#8203;HSAR](https://togithub.com/HSAR) in
[arrow-kt/arrow#3055
- \[HOTFIX] Fix main publish by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#3095

##### New Contributors

-
[@&#8203;DeoTimeTheGithubUser](https://togithub.com/DeoTimeTheGithubUser)
made their first contribution in
[arrow-kt/arrow#3036
- [@&#8203;vladd-g](https://togithub.com/vladd-g) made their first
contribution in
[arrow-kt/arrow#3060
- [@&#8203;yoxjames](https://togithub.com/yoxjames) made their first
contribution in
[arrow-kt/arrow#3052
- [@&#8203;kyay10](https://togithub.com/kyay10) made their first
contribution in
[arrow-kt/arrow#3059
- [@&#8203;jooohn](https://togithub.com/jooohn) made their first
contribution in
[arrow-kt/arrow#3067
- [@&#8203;ILIYANGERMANOV](https://togithub.com/ILIYANGERMANOV) made
their first contribution in
[arrow-kt/arrow#3038
- [@&#8203;HSAR](https://togithub.com/HSAR) made their first
contribution in
[arrow-kt/arrow#3055

**Full Changelog**:
arrow-kt/arrow@1.2.0-RC...1.2.0

### [`v1.1.5`](https://togithub.com/arrow-kt/arrow/releases/tag/1.1.5)

[Compare
Source](https://togithub.com/arrow-kt/arrow/compare/1.1.4...1.1.5)

#### What's Changed

- Remove `test` modules by [@&#8203;serras](https://togithub.com/serras)
in
[arrow-kt/arrow#2874
- Mention Arrow 2.0 in README by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#2878
- Prisms for Either by [@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#2877
- Test 1.8.0 on CI by [@&#8203;nomisRev](https://togithub.com/nomisRev)
in
[arrow-kt/arrow#2864
- Implement 'align' using 'buildList' by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#2886
- Improve debugging experience of leaked shift calls by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2884
- Fix knitCheck & re-add check by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2887

**Full Changelog**:
arrow-kt/arrow@1.1.4...1.1.5

### [`v1.1.4`](https://togithub.com/arrow-kt/arrow/releases/tag/1.1.4)

[Compare
Source](https://togithub.com/arrow-kt/arrow/compare/1.1.3...1.1.4)

#### What's Changed

- \[2743] Migrate internal use of CircuitBreaker double to duration by
[@&#8203;mjmoore](https://togithub.com/mjmoore) in
[arrow-kt/arrow#2748
- Fix typo by [@&#8203;valery1707](https://togithub.com/valery1707) in
[arrow-kt/arrow#2824
- Make the server disconnect test more general by
[@&#8203;lukasz-kalnik-gcx](https://togithub.com/lukasz-kalnik-gcx) in
[arrow-kt/arrow#2822
- Update NonEmptyList.fromList deprecation to suggest `toOption()`
instead by [@&#8203;StylianosGakis](https://togithub.com/StylianosGakis)
in
[arrow-kt/arrow#2832
- Improve Either.getOrHandle() docs by
[@&#8203;lukasz-kalnik-gcx](https://togithub.com/lukasz-kalnik-gcx) in
[arrow-kt/arrow#2833
- Correct `addressStrees` -> `addressStreet` in optics documentation by
[@&#8203;vikrem](https://togithub.com/vikrem) in
[arrow-kt/arrow#2836
- Arrow Fx: deprecate Platform#composeError, never and unit() by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2837
- Backport Optics KSP plugin NPE on multiplatform fix by
[@&#8203;cvb941](https://togithub.com/cvb941) in
[arrow-kt/arrow#2840
- Refactor -
[#&#8203;2812](https://togithub.com/arrow-kt/arrow/issues/2812) sequence
separate performance by [@&#8203;Khepu](https://togithub.com/Khepu) in
[arrow-kt/arrow#2818
- Use `super` equals and hashCode overrides for NonEmptyList by
[@&#8203;RusticFlare](https://togithub.com/RusticFlare) in
[arrow-kt/arrow#2825
- Resource API deprecation, and preparation for 2.x.x. & back port
improvements by [@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2847
- introduce iterable.toNonEmptyListOrNone() by
[@&#8203;myuwono](https://togithub.com/myuwono) in
[arrow-kt/arrow#2843
- \[PROPOSAL] Either API deprecation, and preparation for 2.x.x by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2830
- Use major versions in GitHub Actions by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#2849
- Weaken Either monoid dependencies to only require a semigroup on left
by [@&#8203;mjvmroz](https://togithub.com/mjvmroz) in
[arrow-kt/arrow#2845
- Do not reuse the name of the file in Optics KSP by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#2850
- Additional deprecations, and backports for JVM by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2856
- Update various versions by
[@&#8203;serras](https://togithub.com/serras) in
[arrow-kt/arrow#2852
- Add CountDownLatch by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2854
- Add CyclicBarrier by [@&#8203;nomisRev](https://togithub.com/nomisRev)
in
[arrow-kt/arrow#2857
- Temp rollback error handling deprecations until 1.2.x by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2858
- Setup Kover as test coverage tool by
[@&#8203;MarkMarkyMarkus](https://togithub.com/MarkMarkyMarkus) in
[arrow-kt/arrow#2793
- Fix Monad.either binary combat by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2867
- Backport: MPP No Trace by
[@&#8203;nomisRev](https://togithub.com/nomisRev) in
[arrow-kt/arrow#2869

#### New Contributors

- [@&#8203;mjmoore](https://togithub.com/mjmoore) made their first
contribution in
[arrow-kt/arrow#2748
- [@&#8203;valery1707](https://togithub.com/valery1707) made their first
contribution in
[arrow-kt/arrow#2824
- [@&#8203;lukasz-kalnik-gcx](https://togithub.com/lukasz-kalnik-gcx)
made their first contribution in
[arrow-kt/arrow#2822
- [@&#8203;StylianosGakis](https://togithub.com/StylianosGakis) made
their first contribution in
[arrow-kt/arrow#2832
- [@&#8203;vikrem](https://togithub.com/vikrem) made their first
contribution in
[arrow-kt/arrow#2836
- [@&#8203;cvb941](https://togithub.com/cvb941) made their first
contribution in
[arrow-kt/arrow#2840
- [@&#8203;RusticFlare](https://togithub.com/RusticFlare) made their
first contribution in
[arrow-kt/arrow#2825
- [@&#8203;mjvmroz](https://togithub.com/mjvmroz) made their first
contribution in
[arrow-kt/arrow#2845
- [@&#8203;MarkMarkyMarkus](https://togithub.com/MarkMarkyMarkus) made
their first contribution in
[arrow-kt/arrow#2793

**Full Changelog**:
arrow-kt/arrow@1.1.3...1.1.4-rc.3

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/elide-dev/elide).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMS4wIiwidXBkYXRlZEluVmVyIjoiMzYuMTEuMCIsInRhcmdldEJyYW5jaCI6InYzIn0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

NonEmptyList breaks List equality contract
4 participants