summaryrefslogtreecommitdiff
path: root/test/files/run/t9097.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2015-01-19 21:40:20 +0100
committerLukas Rytz <lukas.rytz@gmail.com>2015-01-20 11:39:48 +0100
commita8b6e361de37705036c4e8307ad75e279fafe9f5 (patch)
tree2e64ec99d239dca045bff93bdbd1471386090e3f /test/files/run/t9097.scala
parent783c5ccfe7c2b22f1a1bdf6530028eac0d941702 (diff)
downloadscala-a8b6e361de37705036c4e8307ad75e279fafe9f5.tar.gz
scala-a8b6e361de37705036c4e8307ad75e279fafe9f5.tar.bz2
scala-a8b6e361de37705036c4e8307ad75e279fafe9f5.zip
SI-9097 Remove spurious warning about conflicting filenames
When using delambdafy:method, closure classes are generated late. The class is added to a map and integrated into the PackageDef in transformStats. When declaring a package object, there are potentially multiple PackageDefs for the same package. In this case, the closure class was added to all of them. As a result, GenASM / GenBCode would run multiple times on the closure class. In GenBCode this would trigger a warning about conflicting filenames.
Diffstat (limited to 'test/files/run/t9097.scala')
-rw-r--r--test/files/run/t9097.scala26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/files/run/t9097.scala b/test/files/run/t9097.scala
new file mode 100644
index 0000000000..0f148c3b9d
--- /dev/null
+++ b/test/files/run/t9097.scala
@@ -0,0 +1,26 @@
+import scala.tools.partest._
+import java.io.{Console => _, _}
+
+object Test extends DirectTest {
+
+ override def extraSettings: String = "-usejavacp -Ydelambdafy:method -Xprint:delambdafy -d " + testOutput.path
+
+ override def code = """package o
+ |package a {
+ | class C {
+ | def hihi = List(1,2).map(_ * 2)
+ | }
+ |}
+ |package object a {
+ | def f = 1
+ |}
+ |""".stripMargin.trim
+
+ override def show(): Unit = {
+ val baos = new java.io.ByteArrayOutputStream()
+ Console.withOut(baos)(Console.withErr(baos)(compile()))
+ val out = baos.toString("UTF-8")
+ // was 2 before the fix, the two PackageDefs for a would both contain the ClassDef for the closure
+ assert(out.lines.count(_ contains "class hihi$1") == 1, out)
+ }
+}