diff options
author | Nicolas Stucki <nicolas.stucki@gmail.com> | 2016-08-25 09:57:18 +0200 |
---|---|---|
committer | Nicolas Stucki <nicolas.stucki@gmail.com> | 2016-09-05 13:47:51 +0200 |
commit | 390a44cdd0b3f43df0969368f62314d78a25c699 (patch) | |
tree | 0498cdbeff47946751e6ec451b9c3f6b89ede5cd | |
parent | 34ef58008168d516d03599097ad1c6189d58a9c8 (diff) | |
download | dotty-390a44cdd0b3f43df0969368f62314d78a25c699.tar.gz dotty-390a44cdd0b3f43df0969368f62314d78a25c699.tar.bz2 dotty-390a44cdd0b3f43df0969368f62314d78a25c699.zip |
Fix #1474: Fix applies to applyDynamic.
-rw-r--r-- | src/dotty/tools/dotc/typer/Applications.scala | 16 | ||||
-rw-r--r-- | tests/run/applydynamic_sip.check (renamed from tests/pending/run/applydynamic_sip.check) | 0 | ||||
-rw-r--r-- | tests/run/applydynamic_sip.flags (renamed from tests/pending/run/applydynamic_sip.flags) | 0 | ||||
-rw-r--r-- | tests/run/applydynamic_sip.scala (renamed from tests/pending/run/applydynamic_sip.scala) | 1 | ||||
-rw-r--r-- | tests/run/t6353.check (renamed from tests/pending/run/t6353.check) | 0 | ||||
-rw-r--r-- | tests/run/t6353.scala (renamed from tests/pending/run/t6353.scala) | 0 |
6 files changed, 10 insertions, 7 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala index 318f2f8ff..52e80930e 100644 --- a/src/dotty/tools/dotc/typer/Applications.scala +++ b/src/dotty/tools/dotc/typer/Applications.scala @@ -592,13 +592,15 @@ trait Applications extends Compatibility { self: Typer with Dynamic => fun1.tpe match { case ErrorType => tree.withType(ErrorType) case TryDynamicCallType => - tree match { - case Apply(Select(qual, name), args) if !isDynamicMethod(name) => - typedDynamicApply(qual, name, None, args, pt)(tree) - case Apply(TypeApply(Select(qual, name), targs), args) if !isDynamicMethod(name) => - typedDynamicApply(qual, name, Some(targs), args, pt)(tree) - case _ => - handleUnexpectedFunType(tree, fun1) + tree.fun match { + case Select(qual, name) if !isDynamicMethod(name) => + typedDynamicApply(qual, name, None, tree.args, pt)(tree) + case TypeApply(Select(qual, name), targs) if !isDynamicMethod(name) => + typedDynamicApply(qual, name, Some(targs), tree.args, pt)(tree) + case TypeApply(fun, targs) => + typedDynamicApply(fun, nme.apply, Some(targs), tree.args, pt)(tree) + case fun => + typedDynamicApply(fun, nme.apply, None, tree.args, pt)(tree) } case _ => tryEither { diff --git a/tests/pending/run/applydynamic_sip.check b/tests/run/applydynamic_sip.check index 6d04dc452..6d04dc452 100644 --- a/tests/pending/run/applydynamic_sip.check +++ b/tests/run/applydynamic_sip.check diff --git a/tests/pending/run/applydynamic_sip.flags b/tests/run/applydynamic_sip.flags index ba6d37305..ba6d37305 100644 --- a/tests/pending/run/applydynamic_sip.flags +++ b/tests/run/applydynamic_sip.flags diff --git a/tests/pending/run/applydynamic_sip.scala b/tests/run/applydynamic_sip.scala index a163ab960..7f81a644a 100644 --- a/tests/pending/run/applydynamic_sip.scala +++ b/tests/run/applydynamic_sip.scala @@ -1,3 +1,4 @@ +import scala.language.dynamics object Test extends dotty.runtime.LegacyApp { object stubUpdate { def update(as: Any*) = println(".update"+as.toList.mkString("(",", ", ")")) diff --git a/tests/pending/run/t6353.check b/tests/run/t6353.check index 5676bed24..5676bed24 100644 --- a/tests/pending/run/t6353.check +++ b/tests/run/t6353.check diff --git a/tests/pending/run/t6353.scala b/tests/run/t6353.scala index 7077eaeda..7077eaeda 100644 --- a/tests/pending/run/t6353.scala +++ b/tests/run/t6353.scala |