Restore pre-3.3.2 behavior of inline implicit def
#19877
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
inline implicit def
is not really a supported feature since it combines Scala 3'sinline
with Scala 2'simplicit
where the latter should eventually be deprecated. This however didn't prevent at least one project from using this combination in a way that was broken by #18249, see #19862 for the details.The issue is that when definining:
Then
foo
is a valid implicit search candidate when looking up an implicitFunction1[A, B]
. However, before #18249 if instead we wrote:Then
foo
would be considered as an implicit search candidate but discarded because eta-expansion was disabled.There is no particular reason for
inline implicit def
to behave differently fromimplicit def
here, but sinceimplicit def
is a legacy feature and since Scala 3.3 is an LTS release, we choose to restore the pre-#18249 behavior for compatibility reasons.Fixes #19862.