From 6eaf815923e194cd4d0da8faa0f132dbf8de4608 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 17 Dec 2014 17:13:30 +0100 Subject: Refactored common behavior from TypeAssigner and TypeErasure --- src/dotty/tools/dotc/TypeErasure.scala | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/dotty/tools/dotc/TypeErasure.scala') diff --git a/src/dotty/tools/dotc/TypeErasure.scala b/src/dotty/tools/dotc/TypeErasure.scala index 13c8b4df7..9f9894c57 100644 --- a/src/dotty/tools/dotc/TypeErasure.scala +++ b/src/dotty/tools/dotc/TypeErasure.scala @@ -108,11 +108,9 @@ object TypeErasure { def erasedRef(tp: Type)(implicit ctx: Context): Type = tp match { case tp: TermRef => assert(tp.symbol.exists, tp) - if(tp.prefix.widenDealias.classSymbol.is(Flags.Package) && !tp.termSymbol.owner.is(Flags.Package)) - // we are accessing a definition inside a package object - TermRef(erasedRef(tp.prefix).member(nme.PACKAGE).asSymDenotation.termRef, tp.symbol.asTerm) - else - TermRef(erasedRef(tp.prefix), tp.symbol.asTerm) + val tp1 = ctx.makePackageObjPrefixExplicit(tp, tp.symbol) + if (tp1 ne tp) erasedRef(tp1) + else TermRef(erasedRef(tp.prefix), tp.symbol.asTerm) case tp: ThisType => tp case tp => -- cgit v1.2.3