diff options
author | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-11-19 10:08:29 -0800 |
---|---|---|
committer | Josh Suereth <Joshua.Suereth@gmail.com> | 2012-11-19 10:08:29 -0800 |
commit | aef791268631ef38aaedd83af87191bdf73196f5 (patch) | |
tree | 851eebf3fd63af7fcac4fb79fbaea273f5388ecd /test/files/run/t6440b.scala | |
parent | 888d0b4868a62c8d8288a4a8b639d282355ac33f (diff) | |
parent | 079296632d8ef5ecc40aafa83757231599c78783 (diff) | |
download | scala-aef791268631ef38aaedd83af87191bdf73196f5.tar.gz scala-aef791268631ef38aaedd83af87191bdf73196f5.tar.bz2 scala-aef791268631ef38aaedd83af87191bdf73196f5.zip |
Merge pull request #1607 from retronym/ticket/6640
SI-6640 Better reporting of deficient classpaths.
Diffstat (limited to 'test/files/run/t6440b.scala')
-rw-r--r-- | test/files/run/t6440b.scala | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/files/run/t6440b.scala b/test/files/run/t6440b.scala new file mode 100644 index 0000000000..974aca2844 --- /dev/null +++ b/test/files/run/t6440b.scala @@ -0,0 +1,61 @@ +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")) + } +} |