summaryrefslogtreecommitdiff
path: root/test/files/run/t6440.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-11-07 23:12:43 +1000
committerJason Zaugg <jzaugg@gmail.com>2014-11-28 13:51:45 +1000
commit54d12f0581f6401c7693ccb0e3105868da19cec2 (patch)
treecb9eadf87e868312b1b233fede26b84c3e5504dd /test/files/run/t6440.scala
parent028420cd80a2cf1127790fdd28088f6db575e8dd (diff)
downloadscala-54d12f0581f6401c7693ccb0e3105868da19cec2.tar.gz
scala-54d12f0581f6401c7693ccb0e3105868da19cec2.tar.bz2
scala-54d12f0581f6401c7693ccb0e3105868da19cec2.zip
SI-8502 Improve resiliance to absent packages
When unpickling a class, we create stub symbols for references to classes absent from the current classpath. If these references only appear in method signatures that aren't called, we can proceed with compilation. This is in line with javac. We're getting better at this, but there are still some gaps. This bug is about the behaviour when a package is completely missing, rather than just a single class within that package. To make this work we have to add two special cases to the unpickler: - When unpickling a `ThisType`, convert a `StubTermSymbol` into a `StubTypeSymbol`. We hit this when unpickling `ThisType(missingPackage)`. - When unpickling a reference to `<owner>.name` where `<owner>` is a stub symbol, don't call info on that owner, but rather allow the enclosing code in `readSymbol` fall through to create a stub for the member. The test case was distilled from an a problem that a Spray user encountered when Akka was missing from the classpath. Two existing test cases have progressed, and the checkfiles are accordingly updated.
Diffstat (limited to 'test/files/run/t6440.scala')
-rw-r--r--test/files/run/t6440.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/test/files/run/t6440.scala b/test/files/run/t6440.scala
index 5a3a4150d9..94eda3642e 100644
--- a/test/files/run/t6440.scala
+++ b/test/files/run/t6440.scala
@@ -41,7 +41,7 @@ object Test extends StoreReporterDirectTest {
assert(tClass.delete())
assert(pack1.delete())
- // bad symbolic reference error expected (but no stack trace!)
+ // should report ambiguous import, despite the fact that a parent of pack2.U is absent
compileCode(app)
println(filteredInfos.mkString("\n"))
}