diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-06-17 15:19:22 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-06-17 15:19:22 -0700 |
commit | a404c63d092e1c73fed41fc6ea87a254d5b4e993 (patch) | |
tree | ecd26b8af907a6a347c9ff71dfc8876dc2d9e9ab | |
parent | c03b4c9844804f72b6fb243f21bb29ae53cf3c9a (diff) | |
parent | 874455a91568ed98e036e9a51e4c9cf28f5fb8d1 (diff) | |
download | scala-a404c63d092e1c73fed41fc6ea87a254d5b4e993.tar.gz scala-a404c63d092e1c73fed41fc6ea87a254d5b4e993.tar.bz2 scala-a404c63d092e1c73fed41fc6ea87a254d5b4e993.zip |
Merge pull request #4545 from retronym/topic/constr-varargs-toolbox
Fix toolbox with varargs constructors
-rw-r--r-- | src/reflect/scala/reflect/runtime/JavaMirrors.scala | 1 | ||||
-rw-r--r-- | test/files/run/toolbox-varargs/Test.scala | 13 | ||||
-rw-r--r-- | test/files/run/toolbox-varargs/Varargs.java | 8 |
3 files changed, 22 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala index ce60ade9f5..8c32a92ecd 100644 --- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala +++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala @@ -1184,6 +1184,7 @@ private[scala] trait JavaMirrors extends internal.SymbolTable with api.JavaUnive constr setInfo GenPolyType(tparams, MethodType(clazz.newSyntheticValueParams(paramtpes), clazz.tpe)) propagatePackageBoundary(jconstr.javaFlags, constr) copyAnnotations(constr, jconstr) + if (jconstr.javaFlags.isVarargs) constr modifyInfo arrayToRepeated markAllCompleted(constr) constr } diff --git a/test/files/run/toolbox-varargs/Test.scala b/test/files/run/toolbox-varargs/Test.scala new file mode 100644 index 0000000000..be5ab45768 --- /dev/null +++ b/test/files/run/toolbox-varargs/Test.scala @@ -0,0 +1,13 @@ +object Test { + def main(args: Array[String]): Unit = { + import scala.tools.reflect.ToolBox + val m = reflect.runtime.currentMirror + val u = m.universe + import u._ + val tb = m.mkToolBox(); + tb.compile(q"new p.Varargs(null, null)") + tb.compile(q"p.Varargs.staticMethod(null, null)") + tb.compile(q"(null: p.Varargs).instanceMethod(null, null)") + } +} + diff --git a/test/files/run/toolbox-varargs/Varargs.java b/test/files/run/toolbox-varargs/Varargs.java new file mode 100644 index 0000000000..da1dbbacc9 --- /dev/null +++ b/test/files/run/toolbox-varargs/Varargs.java @@ -0,0 +1,8 @@ +package p; + +public class Varargs { + public Varargs(String... args) {} + public static void staticMethod(String... args) {} + + public void instanceMethod(String... args) {} +} |