diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2016-11-21 13:27:16 +0100 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2017-01-09 15:34:29 -0800 |
commit | 5b972dc10f0c263bcecd11c528715e8b94ca9efa (patch) | |
tree | 89fad430622a806646d62a200617b29bcfe2187a /test/files/run | |
parent | de361dfe4fab67a01750bccf960788ef10321e4d (diff) | |
download | scala-5b972dc10f0c263bcecd11c528715e8b94ca9efa.tar.gz scala-5b972dc10f0c263bcecd11c528715e8b94ca9efa.tar.bz2 scala-5b972dc10f0c263bcecd11c528715e8b94ca9efa.zip |
SI-10071 Separate compilation for varargs methods
Make sure that methods annotated with varargs are properly mixed-in. This commit
splits the transformation into an info transformer (that works on all symbols, whether
they come from source or binary) and a tree transformer.
The gist of this is that the symbol-creation part of the code was moved to the UnCurry
info transformer, while tree operations remained in the tree transformer. The newly
created symbol is attached to the original method so that the tree transformer can still
retrieve the symbol.
A few fall outs:
- I removed a local map that was identical to TypeParamsVarargsAttachment
- moved the said attachment to StdAttachments so it’s visible between reflect.internal
and nsc.transform
- a couple more comments in UnCurry to honour the boy-scout rule
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/t5125b.check | 3 | ||||
-rw-r--r-- | test/files/run/t5125b.scala | 12 |
2 files changed, 15 insertions, 0 deletions
diff --git a/test/files/run/t5125b.check b/test/files/run/t5125b.check index ddbf908f04..29b438a2d6 100644 --- a/test/files/run/t5125b.check +++ b/test/files/run/t5125b.check @@ -5,3 +5,6 @@ public void C2.f(scala.collection.Seq) public void C2$C3.f(java.lang.String[]) public void C2$C3.f(scala.collection.Seq) public void C4.f(scala.collection.Seq) +private void C5.f(int,int[]) +private void C5.f(int,scala.collection.Seq) +public void C5.f(scala.collection.Seq) diff --git a/test/files/run/t5125b.scala b/test/files/run/t5125b.scala index 149c49e213..60ab1d9792 100644 --- a/test/files/run/t5125b.scala +++ b/test/files/run/t5125b.scala @@ -23,6 +23,17 @@ class C4 { } } +class C5 { + def f(values: String*) = println("Calling C5.f(): " + values) + @scala.annotation.varargs + private def f(v: Int, values: Int*) = println("Calling C5.f(): " + values) + + def method(): Unit = { + @scala.annotation.varargs + def f(values: String*) = println("Calling C5.<locally>.f(): " + values) + } +} + object Test extends App { def check(c: Class[_]) { val methodName = "f" @@ -34,4 +45,5 @@ object Test extends App { check(classOf[C2]) check(classOf[C2#C3]) check(classOf[C4]) + check(classOf[C5]) } |