diff options
author | Som Snytt <som.snytt@gmail.com> | 2015-03-10 23:54:39 -0700 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2015-03-11 00:19:00 -0700 |
commit | d7b99c3c33de8d759353c7ffd1d89e2cb38d793b (patch) | |
tree | 3e7312959bf6775e767e00fec2680c26e0561766 /src/reflect/scala | |
parent | e8e9c0d6b9181be657a1d28eef9f999cb26df9e5 (diff) | |
download | scala-d7b99c3c33de8d759353c7ffd1d89e2cb38d793b.tar.gz scala-d7b99c3c33de8d759353c7ffd1d89e2cb38d793b.tar.bz2 scala-d7b99c3c33de8d759353c7ffd1d89e2cb38d793b.zip |
SI-9102: Reflect method invoke with mixed args
A missing default branch when a method had value class
or by-name params caused other args to present as null
under reflective invocation.
Diffstat (limited to 'src/reflect/scala')
-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..7d72833d64 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) + else arg + ) i += 1 } jinvoke(args1) |