summaryrefslogtreecommitdiff
path: root/test/files/presentation/private-case-class-members/Test.scala
blob: e64c8238ead7f2357d47a7af0ceea6432abece76 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import scala.tools.nsc.interactive.tests.InteractiveTest
import scala.reflect.internal.util.SourceFile
import scala.tools.nsc.interactive.Response

object Test extends InteractiveTest {
  override def execute(): Unit = {
    val source = loadSourceAndWaitUntilTypechecked("State.scala")
    checkErrors(source)
  }

  private def loadSourceAndWaitUntilTypechecked(sourceName: String): SourceFile = {
    val sourceFile = sourceFiles.find(_.file.name == sourceName).head
    compiler.askToDoFirst(sourceFile)
    val res = new Response[Unit]
    compiler.askReload(List(sourceFile), res)
    res.get
    askLoadedTyped(sourceFile).get
    // the second round of type-checking makes it fail
    compiler.askReload(List(sourceFile), res)
    res.get
    askLoadedTyped(sourceFile).get

    sourceFile
  }

  private def checkErrors(source: SourceFile): Unit = compiler.getUnitOf(source) match {
    case Some(unit) =>
      val problems = unit.problems.toList
      if(problems.isEmpty) reporter.println("Test OK")
      else problems.foreach(problem => reporter.println(problem.msg))

    case None => reporter.println("No compilation unit found for " + source.file.name)
  }
}