Skip to content

Commit

Permalink
Type desugared transparent inline def unapply call in the correct mode
Browse files Browse the repository at this point in the history
This regressed in 5648f12.

Fixes #20107.

[Cherry-picked 5672caa]
  • Loading branch information
smarter authored and WojciechMazur committed Jul 5, 2024
1 parent 2740927 commit 11feb72
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
3 changes: 2 additions & 1 deletion compiler/src/dotty/tools/dotc/typer/Applications.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1413,7 +1413,8 @@ trait Applications extends Compatibility {
report.error(em"Structural unapply is not supported", unapplyFn.srcPos)
(unapplyFn, unapplyAppCall)
case Apply(fn, `dummyArg` :: Nil) =>
val inlinedUnapplyFn = Inlines.inlinedUnapplyFun(fn)
val inlinedUnapplyFn = withoutMode(Mode.Pattern):
Inlines.inlinedUnapplyFun(fn)
(inlinedUnapplyFn, inlinedUnapplyFn.appliedToArgs(`dummyArg` :: Nil))
case Apply(fn, args) =>
val (fn1, app) = rec(fn)
Expand Down
6 changes: 6 additions & 0 deletions tests/pos/i20107.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
object foo:
transparent inline def unapply[F](e: F): Option[F] = Some(e.asInstanceOf[F])

class A:
def test(x: Int) = x match
case foo(e) => e

0 comments on commit 11feb72

Please sign in to comment.