From 1821944511457d6f212b3d577101242ef9e77984 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Thu, 16 Mar 2017 00:07:27 +0100 Subject: Don't force denotations in asMemberOf This was introduced in the previous commit and caused unpickling failures, we are now more conservative and only check the Private flag on SymDenotations so we don't have to load any other denotation. --- compiler/src/dotty/tools/dotc/core/Types.scala | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'compiler/src/dotty/tools/dotc/core/Types.scala') diff --git a/compiler/src/dotty/tools/dotc/core/Types.scala b/compiler/src/dotty/tools/dotc/core/Types.scala index c88342e12..fa1b6dda6 100644 --- a/compiler/src/dotty/tools/dotc/core/Types.scala +++ b/compiler/src/dotty/tools/dotc/core/Types.scala @@ -1585,11 +1585,12 @@ object Types { protected def asMemberOf(prefix: Type)(implicit ctx: Context): Denotation = if (name.isShadowedName) prefix.nonPrivateMember(name.revertShadowed) - else { - val d = lastDenotation - // Never go from a non-private denotation to a private one - if (d == null || d.symbol.is(Private)) prefix.member(name) - else prefix.nonPrivateMember(name) + else lastDenotation match { + case d: SymDenotation if !d.is(Private) => + // We shouldn't go from a non-private denotation to a private one + prefix.nonPrivateMember(name) + case _ => + prefix.member(name) } /** (1) Reduce a type-ref `W # X` or `W { ... } # U`, where `W` is a wildcard type -- cgit v1.2.3