aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/TypeErasure.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-17 15:18:44 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-17 17:41:36 +0100
commit9a0ca29cd321ef16ca2a2ce160624701f847542b (patch)
tree2e12173a9b7b36aa6ea4b0545a4e41e2801ee71b /src/dotty/tools/dotc/TypeErasure.scala
parenta68980c1d322095cdd8d7a2b45b05d901072eeb1 (diff)
downloaddotty-9a0ca29cd321ef16ca2a2ce160624701f847542b.tar.gz
dotty-9a0ca29cd321ef16ca2a2ce160624701f847542b.tar.bz2
dotty-9a0ca29cd321ef16ca2a2ce160624701f847542b.zip
Make erasure insert `.package` in referneces
Diffstat (limited to 'src/dotty/tools/dotc/TypeErasure.scala')
-rw-r--r--src/dotty/tools/dotc/TypeErasure.scala4
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