diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2009-03-30 08:45:39 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2009-03-30 08:45:39 +0000 |
commit | 532147c333a8dab79fc77c20162a4d752c6f6780 (patch) | |
tree | d18c5275381e34655b0dad967f6304ba63c4416e /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | 1c72ffaee5e0faeeb6d046216e5e76c86a6a41ff (diff) | |
download | scala-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.scala | 5 |
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) |