blob: 974aca2844ba6ddd79e8e3a3c16efb086ed941b0 (
plain) (
tree)
|
|
import scala.tools.partest._
import java.io.File
object Test extends StoreReporterDirectTest {
def code = ???
def compileCode(code: String) = {
val classpath = List(sys.props("partest.lib"), testOutput.path) mkString sys.props("path.separator")
compileString(newCompiler("-cp", classpath, "-d", testOutput.path))(code)
}
def library1 = """
package pack1
trait T
class U {
def t = new T {}
def one = 1
}
"""
def library2 = """
package pack2
object V {
def u = new pack1.U
}
"""
def app1 = """
package pack3
object Test {
pack2.V.u.one // okay
}
"""
def app2 = """
package pack3
object Test {
pack2.V.u.t // we have to fail if T.class is misisng
}
"""
def show(): Unit = {
compileCode(library1)
val pack1 = new File(testOutput.path, "pack1")
val tClass = new File(pack1, "T.class")
assert(tClass.exists)
assert(tClass.delete())
// allowed to compile, no direct reference to `T`
compileCode(library2)
assert(filteredInfos.isEmpty, filteredInfos)
// allowed to compile, no direct reference to `T`
compileCode(app1)
assert(filteredInfos.isEmpty, filteredInfos)
// bad symbolic reference error expected (but no stack trace!)
compileCode(app2)
println(filteredInfos.mkString("\n"))
}
}
|