aboutsummaryrefslogblamecommitdiff
path: root/compiler/test/dotty/tools/dotc/CompilationTests.scala
blob: 22f7e6d91975891477452dae0b1abab72d3b94f2 (plain) (tree)




























































                                                                                                
package dotty
package tools
package dotc

import org.junit.Test
import java.io.{ File => JFile }

class CompilationTests extends ParallelTesting {
  import CompilationTests.{ defaultOutputDir, defaultOptions }

  @Test def compilePos =
    compileFilesInDir("../tests/pos", defaultOptions).pos

  @Test def compileNeg =
    compileShallowFilesInDir("../tests/neg", defaultOptions).neg
}

object CompilationTests {
  implicit val defaultOutputDir: String = "../out/"

  private val noCheckOptions = Array(
    "-pagewidth", "80"
  )

  private val checkOptions = Array(
    "-Yno-deep-subtypes",
    "-Yno-double-bindings",
    "-Yforce-sbt-phases"
  )

  private val classPath = {
    val paths = Jars.dottyTestDeps map { p =>
      val file = new JFile(p)
      assert(
        file.exists,
        s"""|File "$p" couldn't be found. Run `packageAll` from build tool before
            |testing.
            |
            |If running without sbt, test paths need to be setup environment variables:
            |
            | - DOTTY_LIBRARY
            | - DOTTY_COMPILER
            | - DOTTY_INTERFACES
            | - DOTTY_EXTRAS
            |
            |Where these all contain locations, except extras which is a colon
            |separated list of jars.
            |
            |When compiling with eclipse, you need the sbt-interfaces jar, put
            |it in extras."""
      )
      file.getAbsolutePath
    } mkString (":")

    Array("-classpath", paths)
  }

  private val yCheckOptions = Array("-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef")

  val defaultOptions = noCheckOptions ++ checkOptions ++ yCheckOptions ++ classPath
}