diff options
author | odersky <odersky@gmail.com> | 2016-09-16 19:51:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-16 19:51:44 +0300 |
commit | 9ae9a20e6c1b349728d8b0ecd2144ed613cd0ef2 (patch) | |
tree | 18fcd1a7eeb5f3ad61bf8dae52daba45cdab8272 /src/dotty/tools/dotc/typer/Applications.scala | |
parent | 5d8f132b98ca10e47773275c7048ce132f5f197c (diff) | |
parent | 0ee74cc0f8252caa189f0a7aaf8a274df486f971 (diff) | |
download | dotty-9ae9a20e6c1b349728d8b0ecd2144ed613cd0ef2.tar.gz dotty-9ae9a20e6c1b349728d8b0ecd2144ed613cd0ef2.tar.bz2 dotty-9ae9a20e6c1b349728d8b0ecd2144ed613cd0ef2.zip |
Merge pull request #1469 from dotty-staging/fix-scala.Dynamic
Fixes for scala.Dynamic
Diffstat (limited to 'src/dotty/tools/dotc/typer/Applications.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/Applications.scala | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/typer/Applications.scala b/src/dotty/tools/dotc/typer/Applications.scala index 1fff14cc6..a9212e5d6 100644 --- a/src/dotty/tools/dotc/typer/Applications.scala +++ b/src/dotty/tools/dotc/typer/Applications.scala @@ -591,13 +591,7 @@ trait Applications extends Compatibility { self: Typer with Dynamic => fun1.tpe match { case ErrorType => tree.withType(ErrorType) - case TryDynamicCallType => - tree match { - case tree @ Apply(Select(qual, name), args) if !isDynamicMethod(name) => - typedDynamicApply(qual, name, args, pt)(tree) - case _ => - handleUnexpectedFunType(tree, fun1) - } + case TryDynamicCallType => typedDynamicApply(tree, pt) case _ => tryEither { implicit ctx => simpleApply(fun1, proto) @@ -679,7 +673,12 @@ trait Applications extends Compatibility { self: Typer with Dynamic => } case _ => } - assignType(cpy.TypeApply(tree)(typedFn, typedArgs), typedFn, typedArgs) + def tryDynamicTypeApply(): Tree = typedFn match { + case typedFn: Select if !pt.isInstanceOf[FunProto] => typedDynamicSelect(typedFn, typedArgs, pt) + case _ => tree.withType(TryDynamicCallType) + } + if (typedFn.tpe eq TryDynamicCallType) tryDynamicTypeApply() + else assignType(cpy.TypeApply(tree)(typedFn, typedArgs), typedFn, typedArgs) } /** Rewrite `new Array[T](....)` if T is an unbounded generic to calls to newGenericArray. |