summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/pickling
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2015-07-20 17:21:16 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2015-07-20 17:32:16 +0200
commitb6feac28697934e3c8ea7d90025cf6032062a886 (patch)
treedecfb69c1a404f0a40304da39005a197fa763535 /src/reflect/scala/reflect/internal/pickling
parentf2e055f251d8c7169e8a84246d62d923fbcc8524 (diff)
downloadscala-b6feac28697934e3c8ea7d90025cf6032062a886.tar.gz
scala-b6feac28697934e3c8ea7d90025cf6032062a886.tar.bz2
scala-b6feac28697934e3c8ea7d90025cf6032062a886.zip
SI-8502 create PackageClass instead of Class symbol stubs for pkgs
https://github.com/scala/scala/pull/4111 creates a stub type symbol for missing packages, deferring (or avoiding) a crash if a package is missing. The symbol created was a ClassSymbol, which could lead to an assertion failure in flattten: case TypeRef(pre, sym, args) if isFlattenablePrefix(pre) => assert(args.isEmpty && sym.enclosingTopLevelClass != NoSymbol, sym.ownerChain) `pre` is the stub ClassSymbol, so `isFlattenablePrefix` is true (but it should be false). The assertion then fails because the enclosing class of a top-level class defined in a missing package is NoSymbol. This failed only with GenBCode, which traverses more of the symbol graph while building ClassBTypes: it looks collects the nested classes of `Outer` into a `NestedInfo`.
Diffstat (limited to 'src/reflect/scala/reflect/internal/pickling')
-rw-r--r--src/reflect/scala/reflect/internal/pickling/UnPickler.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
index 1fc7aebab0..1f643b2b23 100644
--- a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
+++ b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
@@ -398,7 +398,7 @@ abstract class UnPickler {
val sym = readSymbolRef() match {
case stub: StubSymbol if !stub.isClass =>
// SI-8502 This allows us to create a stub for a unpickled reference to `missingPackage.Foo`.
- stub.owner.newStubSymbol(stub.name.toTypeName, stub.missingMessage)
+ stub.owner.newStubSymbol(stub.name.toTypeName, stub.missingMessage, isPackage = true)
case sym => sym
}
ThisType(sym)