import scala.tools.partest._
import java.io.{Console => _, _}

object Test extends StoreReporterDirectTest {

  override def extraSettings: String = List(
    "-usejavacp",
    "-Xfatal-warnings",
    "-Ydelambdafy:method",
    "-Xprint:delambdafy",
    s"-d ${testOutput.path}"
  ) mkString " "

  override def code = """package o
                        |package a {
                        |  class C {
                        |    def hihi = List(1,2).map(_ => "")
                        |  }
                        |}
                        |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()))
    assert(!storeReporter.hasErrors, message = filteredInfos map (_.msg) mkString "; ")
    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 "def $anonfun$hihi$1(x$1: Int): String") == 1, out)
  }
}
