diff options
author | Martin Odersky <odersky@gmail.com> | 2016-04-27 18:05:15 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-04-27 18:07:33 +0200 |
commit | d7c1c27b0765b33811326e3cf02dcd4aa12b6cd8 (patch) | |
tree | 0dcca4fb37ba79d531567789bf3600997ade0684 /src | |
parent | 3129c1c136d5fa8b1549ec940ea1856c135bfe85 (diff) | |
download | dotty-d7c1c27b0765b33811326e3cf02dcd4aa12b6cd8.tar.gz dotty-d7c1c27b0765b33811326e3cf02dcd4aa12b6cd8.tar.bz2 dotty-d7c1c27b0765b33811326e3cf02dcd4aa12b6cd8.zip |
Allow dependent method type for unapply.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/typer/Applications.scala | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala index 37a9f0ba0..d70546f9d 100644 --- a/src/dotty/tools/dotc/typer/Applications.scala +++ b/src/dotty/tools/dotc/typer/Applications.scala @@ -736,8 +736,7 @@ trait Applications extends Compatibility { self: Typer => } unapplyFn.tpe.widen match { - case mt: MethodType if mt.paramTypes.length == 1 && !mt.isDependent => - val m = mt + case mt: MethodType if mt.paramTypes.length == 1 => val unapplyArgType = mt.paramTypes.head unapp.println(i"unapp arg tpe = $unapplyArgType, pt = $selType") def wpt = widenForMatchSelector(selType) // needed? @@ -778,7 +777,7 @@ trait Applications extends Compatibility { self: Typer => tree.pos) } - val dummyArg = dummyTreeOfType(unapplyArgType) + val dummyArg = dummyTreeOfType(ownType) val unapplyApp = typedExpr(untpd.TypedSplice(Apply(unapplyFn, dummyArg :: Nil))) val unapplyImplicits = unapplyApp match { case Apply(Apply(unapply, `dummyArg` :: Nil), args2) => assert(args2.nonEmpty); args2 |