summaryrefslogtreecommitdiff
path: root/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-11-13 11:02:30 +0100
committerJason Zaugg <jzaugg@gmail.com>2012-11-13 11:02:30 +0100
commit079296632d8ef5ecc40aafa83757231599c78783 (patch)
treeae523bd1269c22b460890298c34dc6c922e1aafa /test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
parent86e045e2863b04bf4af4abb5c2ce345bcdae2b80 (diff)
downloadscala-079296632d8ef5ecc40aafa83757231599c78783.tar.gz
scala-079296632d8ef5ecc40aafa83757231599c78783.tar.bz2
scala-079296632d8ef5ecc40aafa83757231599c78783.zip
SI-6440 Address regressions around MissingRequirementError
Go back to using globalError to report when a stub's info is referenced, and only throw the MissingRequirementError when compilation really must abort due to having a StubTermSymbol in a place where a StubClassSymbol would have been a better choice. This situation arises when an entire package is missing from the classpath, as was the case in the reported bug. Adds `StoreReporterDirectTest`, which buffers messages issued during compilation for more structured interrogation. Use this in two test for manifests -- these tests were using a crude means of grepping compiler console output to focus on the relevant output, but this approach was insufficient with the new multi-line error message emitted as part of this change. Also used that base test class to add two new tests: one for the reported error (package missing), and another for a simpler error (class missing). The latter test shows how stub symbols allow code to compile if it doesn't the subset of signatures in some type that refer to a missing class. Gave the INFO/WARNING/ERROR members of Reporter sensible toString implementations; they inherit from Enumeration#Value in an unusual manner (why?) that means the built in toString of Enumeration printed `Severity@0`.
Diffstat (limited to 'test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala')
-rw-r--r--test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala15
1 files changed, 8 insertions, 7 deletions
diff --git a/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala b/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
index e984127583..6804baa0c3 100644
--- a/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
+++ b/test/files/run/typetags_without_scala_reflect_typetag_manifest_interop.scala
@@ -1,6 +1,7 @@
import scala.tools.partest._
+import scala.tools.nsc.Settings
-object Test extends DirectTest {
+object Test extends StoreReporterDirectTest {
def code = ???
def library = """
@@ -29,18 +30,18 @@ object Test extends DirectTest {
"""
def compileApp() = {
val classpath = List(sys.props("partest.lib"), testOutput.path) mkString sys.props("path.separator")
+ val global = newCompiler("-cp", classpath, "-d", testOutput.path)
compileString(newCompiler("-cp", classpath, "-d", testOutput.path))(app)
+ //global.reporter.ERROR.foreach(println)
}
def show(): Unit = {
- val prevErr = System.err
- val baos = new java.io.ByteArrayOutputStream();
- System.setErr(new java.io.PrintStream(baos));
compileLibrary();
+ println(filteredInfos.mkString("\n"))
+ storeReporter.infos.clear()
compileApp();
// we should get bad symbolic reference errors, because we're trying to use an implicit that can't be unpickled
// but we don't know the number of these errors and their order, so I just ignore them all
- baos.toString.split("\n") filter (!_.startsWith("error: bad symbolic reference")) foreach println
- System.setErr(prevErr)
+ println(filteredInfos.filterNot (_.msg.contains("bad symbolic reference")).mkString("\n"))
}
-} \ No newline at end of file
+}