Commit af69895
committed
Restore pre-3.3.2 behavior of
`inline implicit def` is not really a supported feature since it combines Scala
3's `inline` with Scala 2's `implicit` 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:
implicit def foo(x: A): B = ...
Then `foo` is a valid implicit search candidate when looking up an implicit
`Function1[A, B]`. However, before #18249 if instead we wrote:
inline implicit def foo(x: A): B = ...
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
from `implicit def` here, but since `implicit 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.inline implicit def
1 parent b02d898 commit af69895
File tree
3 files changed
+11
-0
lines changed- compiler/src/dotty/tools/dotc
- core
- typer
- tests/pos
3 files changed
+11
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
581 | 581 | | |
582 | 582 | | |
583 | 583 | | |
| 584 | + | |
584 | 585 | | |
585 | 586 | | |
586 | 587 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3993 | 3993 | | |
3994 | 3994 | | |
3995 | 3995 | | |
| 3996 | + | |
3996 | 3997 | | |
3997 | 3998 | | |
3998 | 3999 | | |
3999 | 4000 | | |
| 4001 | + | |
4000 | 4002 | | |
4001 | 4003 | | |
4002 | 4004 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
0 commit comments