diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-17 15:18:44 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-17 17:41:36 +0100 |
commit | 9a0ca29cd321ef16ca2a2ce160624701f847542b (patch) | |
tree | 2e12173a9b7b36aa6ea4b0545a4e41e2801ee71b | |
parent | a68980c1d322095cdd8d7a2b45b05d901072eeb1 (diff) | |
download | dotty-9a0ca29cd321ef16ca2a2ce160624701f847542b.tar.gz dotty-9a0ca29cd321ef16ca2a2ce160624701f847542b.tar.bz2 dotty-9a0ca29cd321ef16ca2a2ce160624701f847542b.zip |
Make erasure insert `.package` in referneces
-rw-r--r-- | src/dotty/tools/dotc/TypeErasure.scala | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/TypeErasure.scala b/src/dotty/tools/dotc/TypeErasure.scala index 973e50e8e..13c8b4df7 100644 --- a/src/dotty/tools/dotc/TypeErasure.scala +++ b/src/dotty/tools/dotc/TypeErasure.scala @@ -108,6 +108,10 @@ 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) case tp: ThisType => tp |