diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-03-24 13:11:07 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2015-03-24 13:11:07 +1000 |
commit | fcc20fe4d3ac5caceb50965bc202b880e61f984c (patch) | |
tree | 7c56c380fecc56fe82477e6438434fe444805aee /src | |
parent | 7741d3f0a37bb673462863ba389c27ce6eccaccf (diff) | |
parent | 0a8dfd927e6362656b541360cf6920c2c7c69b08 (diff) | |
download | scala-fcc20fe4d3ac5caceb50965bc202b880e61f984c.tar.gz scala-fcc20fe4d3ac5caceb50965bc202b880e61f984c.tar.bz2 scala-fcc20fe4d3ac5caceb50965bc202b880e61f984c.zip |
Merge pull request #4378 from som-snytt/issue/9102
SI-9102: Reflect method invoke with mixed args
Diffstat (limited to 'src')
-rw-r--r-- | src/reflect/scala/reflect/runtime/JavaMirrors.scala | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala index 1c751fb93b..3b497227e7 100644 --- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala +++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala @@ -428,9 +428,12 @@ private[scala] trait JavaMirrors extends internal.SymbolTable with api.JavaUnive var i = 0 while (i < args1.length) { val arg = args(i) - if (i >= paramCount) args1(i) = arg // don't transform varargs - else if (isByName(i)) args1(i) = () => arg // don't transform by-name value class params - else if (isDerivedValueClass(i)) args1(i) = paramUnboxers(i).invoke(arg) + args1(i) = ( + if (i >= paramCount) arg // don't transform varargs + else if (isByName(i)) () => arg // don't transform by-name value class params + else if (isDerivedValueClass(i)) paramUnboxers(i).invoke(arg) // do get the underlying value + else arg // don't molest anything else + ) i += 1 } jinvoke(args1) |