diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2016-11-29 14:42:01 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2016-11-29 14:48:58 +1000 |
commit | 51d851ce2e403201d99d236a4bafd5728edc754f (patch) | |
tree | 749dd8e62ce2875bd4101d454676b68c3caff422 /src/reflect | |
parent | b47aaf6445afe4a6818c31a0ed10e680e6b82c24 (diff) | |
download | scala-51d851ce2e403201d99d236a4bafd5728edc754f.tar.gz scala-51d851ce2e403201d99d236a4bafd5728edc754f.tar.bz2 scala-51d851ce2e403201d99d236a4bafd5728edc754f.zip |
SD-275 Further harden against refs to absentee classes
- Limit the strategy of unpickling an external reference to a
module class to a lookup of the module var to non-stub owners
in order to enable fall through to stub symbol creation.
Fixes scala/scala-dev#275
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/pickling/UnPickler.scala | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala index 3bc845557f..fd7d2d9dd6 100644 --- a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala +++ b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala @@ -224,10 +224,9 @@ abstract class UnPickler { if (owner.isOverloaded) return NoSymbol - if (tag == EXTMODCLASSref) { + if (tag == EXTMODCLASSref && !owner.isInstanceOf[StubSymbol]) owner.info.decl(nme.moduleVarName(name.toTermName)) - } - NoSymbol + else NoSymbol } def moduleAdvice(missing: String): String = { |