aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Applications.scala
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2016-09-16 19:51:44 +0300
committerGitHub <noreply@github.com>2016-09-16 19:51:44 +0300
commit9ae9a20e6c1b349728d8b0ecd2144ed613cd0ef2 (patch)
tree18fcd1a7eeb5f3ad61bf8dae52daba45cdab8272 /src/dotty/tools/dotc/typer/Applications.scala
parent5d8f132b98ca10e47773275c7048ce132f5f197c (diff)
parent0ee74cc0f8252caa189f0a7aaf8a274df486f971 (diff)
downloaddotty-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.scala15
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.