diff options
author | Som Snytt <som.snytt@gmail.com> | 2015-03-11 10:04:27 -0700 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2015-03-11 10:04:27 -0700 |
commit | 0a8dfd927e6362656b541360cf6920c2c7c69b08 (patch) | |
tree | cd95feec10581c3f8de178f8e2e6f875e5b860b1 | |
parent | d7b99c3c33de8d759353c7ffd1d89e2cb38d793b (diff) | |
download | scala-0a8dfd927e6362656b541360cf6920c2c7c69b08.tar.gz scala-0a8dfd927e6362656b541360cf6920c2c7c69b08.tar.bz2 scala-0a8dfd927e6362656b541360cf6920c2c7c69b08.zip |
SI-9102: Improve test
Cover the second use case reported on the ML (ctors).
Improve formatting per the review. And it really does look
a lot better.
-rw-r--r-- | src/reflect/scala/reflect/runtime/JavaMirrors.scala | 8 | ||||
-rw-r--r-- | test/files/run/t9102.scala | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala index 7d72833d64..3b497227e7 100644 --- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala +++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala @@ -429,10 +429,10 @@ private[scala] trait JavaMirrors extends internal.SymbolTable with api.JavaUnive while (i < args1.length) { val arg = args(i) 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 + 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 } diff --git a/test/files/run/t9102.scala b/test/files/run/t9102.scala index 37ae53b2ab..c46cf0e4b4 100644 --- a/test/files/run/t9102.scala +++ b/test/files/run/t9102.scala @@ -7,6 +7,8 @@ object Test extends App { class V(val v: Int) extends AnyVal { def doubled = 2 * v } class D { def f(i: Int, j: V) = i + j.doubled } + class E(i: Int, j: V) + locally { val ms = typeOf[C].member(TermName("f")).asMethod val im = currentMirror reflect (new C) @@ -19,6 +21,12 @@ object Test extends App { val mm = im reflectMethod ms assert(mm(2, new V(3)) == 8) } + locally { + val ms = typeOf[E].typeSymbol.asClass.primaryConstructor + val cm = currentMirror reflectClass typeOf[E].typeSymbol.asClass + val mm = cm reflectConstructor ms.asMethod + assert(mm(42, new V(7)).isInstanceOf[E]) + } } /* Session tests without special init code should reside in simple script files. |