summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2009-03-30 08:45:39 +0000
committerIulian Dragos <jaguarul@gmail.com>2009-03-30 08:45:39 +0000
commit532147c333a8dab79fc77c20162a4d752c6f6780 (patch)
treed18c5275381e34655b0dad967f6304ba63c4416e /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent1c72ffaee5e0faeeb6d046216e5e76c86a6a41ff (diff)
downloadscala-532147c333a8dab79fc77c20162a4d752c6f6780.tar.gz
scala-532147c333a8dab79fc77c20162a4d752c6f6780.tar.bz2
scala-532147c333a8dab79fc77c20162a4d752c6f6780.zip
Code to support invoke-dynamic for structural t...
Code to support invoke-dynamic for structural types. Not yet complete, built around the JSR 292 spec of December 2008.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index b14f6724e2..dec6d58b45 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -3373,9 +3373,10 @@ trait Typers { self: Analyzer =>
typedApply(fun, args)
case ApplyDynamic(qual, args) =>
+ val reflectiveCalls = !(settings.refinementMethodDispatch.value == "invoke-dynamic")
val qual1 = typed(qual, AnyRefClass.tpe)
- val args1 = List.mapConserve(args)(arg => typed(arg, AnyRefClass.tpe))
- copy.ApplyDynamic(tree, qual1, args1) setType AnyRefClass.tpe
+ val args1 = List.mapConserve(args)(arg => if (reflectiveCalls) typed(arg, AnyRefClass.tpe) else typed(arg))
+ copy.ApplyDynamic(tree, qual1, args1) setType (if (reflectiveCalls) AnyRefClass.tpe else tree.symbol.info.resultType)
case Super(qual, mix) =>
typedSuper(qual, mix)